题目:编写判断子串的函数
编写一个函数:
int Strstr(char s1[],char s2[]) ;
如果s2不是s1的字串,返回-1
如果s2是s1的子串,返回其在s1中第一次出现的位置
空串是任何串的子串,且出现位置为0
一、创建字符串的方式:
1.char* str = “abcd”;
2.char str[] = { “abcd” };
3.char str[] = {‘a’,’b’,’c’,’d’,,’\0’};
二、代码
我还不是很理解,做个笔记:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int Strstr(char s1[],char s2[]);
int main(){
char s1[]="qwerty";
char s2[]="wer";
int a =Strstr(s1,s2);
printf("%d",a);
return 0;
}
int Strstr(char s1[],char s2[]){
// 判断s2是否是空字符串
if(s2[0]==0){
return 0;
}
for(int i=0;s1[i];++i) {
// 这里的s1[i]只有最后一个'\0'才为0,其他都不为0
int k=i,j=0;
for(;s2[j];++j,++k){
if(s1[k]!=s2[j]){
break;
}
}
if(s2[j]==0){
return i;
}
}
return -1;
}