小胖学长找宝藏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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。