第一章
题目:
字符串比对
题目内容:
题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。
注意,第一个字符的位置是0。
注意,第一个字符串在第二个字符串中的位置可能不止一处。
注意,字符串中可能含有空格。
注意,两个字符串的长度一定大于0。
输入格式:
两个字符串,一行一个。
输出格式:
第一个字符串在第二个字符串中出现的位置,按照从小到到的顺序排列,每个数字后面有一个空格。
如果在第二个字符串中找不到第一个字符串,则输出-1。
输入样例:
abba
ababbba abbabbabbabbaacc
输出样例:
8 11 14 17
自拟题解:
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 char str1[10000]={‘\0‘}, str2[10000]={‘\0‘}; 6 int i=0, j=0, flag=0, ch; 7 8 while((ch=getchar())!=‘\n‘) 9 str1[i++] = ch; 10 i = 0; 11 12 while((ch=getchar())!=‘\n‘) 13 str2[i++] = ch; 14 i = 0; 15 16 int len1 = strlen(str1); 17 int len2 = strlen(str2); 18 char temp[10000]={‘\0‘}; 19 20 for(i=0; i<len2; i++) 21 { 22 //指针p指向每次需要比较的字符串首字符 23 char *p = &str2[i]; 24 strcpy(temp, p); 25 //截取len1长度的字符串 26 temp[len1] = ‘\0‘; 27 28 if(!strcmp(str1, temp)) 29 { 30 printf("%d ", i); 31 flag++; 32 } 33 34 } 35 if(flag==0) 36 printf("-1"); 37 return 0; 38 39 }
原文地址:https://www.cnblogs.com/zxbt/p/10849327.html
时间: 2024-10-04 18:02:15