#include <stdio.h>
#include <string.h>
#define MAXSTRLEN 100
typedef char SString[MAXSTRLEN+2];
void InputString(SString &str) {
// 读取字符串
scanf("%s", str + 1); // 首先用scanf读取字符串
str[0] = strlen(str + 1); // 求出字符串的长度并保存在str[0]中
}
int Index(SString S, SString T, int pos) { // 算法4.5
// 返回子串T在主串S中第pos个字符之后的位置。
// 若不存在,则函数值为0。
// 其中,T非空,1≤pos≤StrLength(S)。
int i = pos;
int j = 1;
while (i <= S[0] && j <= T[0]) {
putchar(S[i]); // 只要添加这一句输出相应的字符即可
if (S[i] == T[j]) { // 继续比较后继字符
++i;
++j;
} else { // 指针后退重新开始匹配
i = i - j + 2;
j = 1;
}
}
if (j > T[0]){
return i - T[0];
}
else
return 0;
} // Index
int main(){
int i;
SString S, T; // 定义存储两个字符串的变量
int index = 0; // 存储下标
for(i=0; i<3; i++){
InputString(S); // 读取两个字符串
InputString(T);
index = Index(S, T, 1); // 定位子串
printf("\n%d\n", index);// 输出子串的下标
}
return 0;
}
/**************************************************************
Problem: 2150
User: admin
Language: C++
Result: Accepted
Time:11 ms
Memory:1144 kb
****************************************************************/