小胖学长找宝藏2

时间: 1ms        内存:128M

描述:

小胖轻轻松松找到第一个宝藏完全得益于聪明的你,现在小胖又发现了一个宝藏。大门的钥匙也是一个特殊的数字,现在山洞中散落了两个字符串A与B,B串是A的子串,而这个钥匙就是B串在A串中的位置。例如: 

串A:”ASDFGHJKL” ,串B:”DFG”,所以此时钥匙就是3,因为串B在串A中3的位置。 

输入:

两个字符串str1、str2(字符串长度不会超过100)

输出:

str2在str1中的位置

示例输入:

QWERTYUI
WE

示例输出:

2

提示:

参考答案(内存最优[1120]):

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int changdu(char a[],char str[])

{
    int i,j,k;

    int x = strlen(str);

    for(i = 0;i<=strlen(a);i++){

        if(a[i] == str[0]){

                k = i;

                int sum = 0,aa = 0;

            for(j = 0;j<x;j++){
 
               if(str[j] == a[k]&&aa == sum){
 
                   k++;

                    sum++;
 
               }
                
aa++;
           
 }
            
if(sum == x){
                
return i+1;
            
}
        
}
    
}
    
return 0;

}
int main()
{
    char a[100],str[20];
    scanf("%s",a);
    scanf("%s",str);
    int j = changdu(a,str);
    printf("%d",j);
    return 0;
}

参考答案(时间最优[2]):

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int changdu(char a[],char str[])

{
    int i,j,k;

    int x = strlen(str);

    for(i = 0;i<=strlen(a);i++){

        if(a[i] == str[0]){

                k = i;

                int sum = 0,aa = 0;

            for(j = 0;j<x;j++){
 
               if(str[j] == a[k]&&aa == sum){
 
                   k++;

                    sum++;
 
               }
                
aa++;
           
 }
            
if(sum == x){
                
return i+1;
            
}
        
}
    
}
    
return 0;

}
int main()
{
    char a[100],str[20];
    scanf("%s",a);
    scanf("%s",str);
    int j = changdu(a,str);
    printf("%d",j);
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。