给定一串1和串2,若串2是串1的子串,则返回串2在串1中第一个字母出现的位置,若串2不是串1的子串,返回-1;

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

int main(){
   
    char str[99];
    char subStr[99];
    while(cin>>str>>subStr){

        int str_len=strlen(str);
        int sub_len=strlen(subStr);
      //  int flag=0;
        int p=0;
        int index=-1;
        for(int i=0;i<str_len+1;){
            if(p==sub_len){
              //  flag=1;若只需判断是否是串1的子串,只需加个flag变量,可以删去index变量
                index=i-p+1;
                break;
            }
            else if(str[i]==subStr[p]){
                p++;i++;
            }
            else if(str[i]!=subStr[p]&&p==0){
                i++;
            }
            else if(str[i]!=subStr[p]&&p!=0){
                i=i-p+1;
                p=0;
            }
        }
        cout<<index<<endl;
    }
    return 0;
}

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐