C++算法:判断字符串s2是否是s1的子串

子串的判断方法

// 编写一个判断子串的函数
#include<iostream>
#include<cstring>
using namespace std;

int Strstr(char s1[],char s2[]){
    // 空串是任何字符串的子串
    if (s2[0]==0){
        return 0;
    }
    else{
        for(int i=0;s1[i];i++){
            int k=i,j=0;
            // k表示s1当前遍历的位置,j表示s2当前遍历的位置
            for(;s2[j];++k,++j){
                // 一旦有不相同,跳出循环
                if(s1[k]!=s2[j]){
                    break;
                }
            }
            // 如果已经遍历完了s2才跳出的循环
            if( s2[j]==0){
                // 返回最开始的s1的起始位置
                return i;
            }
        }
        return -1;
    }
}
int main(){
    char s1[40];
    char s2[40];
    cout<<"s1= ";
    cin>>s1;
    cout<<endl;
    cout<<"s2= ";
    cin>>s2;
    int n=Strstr(s1,s2);

    cout<<"location: "<<n<<endl;
    system("pause");
    return 0;

}
posted @ 2021-04-24 15:05  Zeker62  阅读(533)  评论(0编辑  收藏  举报