1 条题解

  • 0
    @ 2025-4-12 21:47:19

    C :

    #include <stdio.h>
    int main(){
    	int ii,i,j,k,flag;
    	char str[100],sub[100];
    //	freopen("1.txt","r",stdin);
    	while (scanf("%s %s",str,sub)!=EOF)
    	{
    	
    			for (j=0;str[j];j++)
    			{
    				if (sub[0]!=str[j])
    				{
    					continue;
    				}else{
    					k=j;
    					i=0;
    					flag=1;
    					while (sub[i]&&str[k])
    					{
    						if (sub[i++]!=str[k++])
    						{
    							flag=0;
    							break;
    						}
    					}
    					if (flag)
    					{
    						if (!sub[i])
    						{
    							printf("%d\n",j+1);
    							break;
    						}
    						if (!str[k])
    						{
    							j=k;
    						}
    					}
    				}
    		}
    		if (!str[j])
    		{
    			printf("0\n");
    		}
    			
    	}
    //	fclose(stdin);
    	return 0;
    }
    

    C++ :

    #include <stdio.h>
    #include <string.h>
    
    typedef char SString[100];
    typedef int Status;
    #define OK 1
    #define ERROR 0
    
    int StrLength(SString str){
    	// 计算字符串的长度
    	return strlen(str+1);
    }
    
    int StrCompare(SString str1, SString str2){
    	// 比较两个字符串是否相等
    	return !strcmp(str1+1, str2+1);
    }
    
    Status SubString(SString &Sub, SString S, int pos, int len) {
       // 算法4.3
       // 用Sub返回串S的第pos个字符起长度为len的子串。
       // 其中,1≤pos≤StrLength(S)且0≤len≤StrLength(S)-pos+1。
       int i;
       if (pos < 1 || pos > S[0] || len < 0 || len > S[0]-pos+1)
          return ERROR;
       for(i=1; i<=len; i++)
          Sub[i] = S[pos+i-1];
       Sub[len+1] = '\0';
       return OK;
    } // SubString
    
    int Index(SString S, SString T, int pos) {  // 算法4.1
       // T为非空串。若主串S中第pos个字符之后存在与T相等的子串,
       // 则返回第一个这样的子串在S中的位置,否则返回0
       int n,m,i;
       SString sub;
       if (pos > 0) {
          n = StrLength(S);
          m = StrLength(T);
          i = pos;
          while (i <= n-m+1) {
             SubString(sub, S, i, m);
             if (StrCompare(sub,T) == 0) ++i;
             else return i;
          } // while
       } // if
       return 0;
    }
    
    int main(){
    
    	SString strA, subStr;	// 定义存储母串和子串的存储空间
    	while(scanf("%s%s", strA+1, subStr+1) != EOF){	// 读取母串与子串
    		printf("%d\n", Index(strA, subStr, 1));
    	}
    
    	return 0;
    }
    
    

    Java :

    import java.util.*;
    public class Main 
    {
    	public static void main(String[] args)
    	{
    		Scanner cin = new Scanner(System.in);
    		String s1,s2;
    		int n;
    		while(cin.hasNext())
    		{
    			s1=cin.next();
    			s2=cin.next();
    			System.out.println(s1.indexOf(s2, 0)+1);
    		}
    		cin.close();
    	}
    }
    
    • 1

    信息

    ID
    1687
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者