c++字符串的最大跨距问题

为啥输入啥都是-1,我一开始初始化t1=t2=0,就是t2-t1-1的值,改一下t2或者t1的值输出的值就改变了,敢情我的t2和t1根本没有进入循环呗,这怎么改啊,能不能在我的原有代码的基础上稍稍改动一下,或者找一下我写的代码的错误

img

img

img

img


#include 
#include 
#include 
#include 

using namespace std;

int main(){
    string s,s1,s2,s3;
    int x;
    cin >> s;
    int z=s.size(),z1=s1.size(),z2=s2.size(),z3=s3.size();
    for(int i=0;iif(s[i]==',') break;
        s1=s1+s[i];
        x=i;
    }
    for(int i=x+2;iif(s[i]==',') break;
            s2=s2+s[i];
            x=i;
    }
    for(int i=x+2;is3=s3+s[i];
    }
    
        int t1=0,flag1=0;
    for(int i=0,j=0,count=0;iif(s1[i]==s2[j%z2]){
        count++;
        }
        if(count==z2){
        flag1=1;
        t1=i;
        break;
        }
        if (s1[i]!=s2[i]){
        i=i-count;
        count=0;
        j=j-count-1;
        }
    }
        int t2=0,flag2=0;
     for(int i=0,j=0,count=0;iif(s1[i]==s3[j%z3]) 
        count++;
        if(count==z3){
        flag2=1;
        t2=i-count+1;
        i=i-(count-1);
        count=0;
        }
        if(s1[i]!=s3[i]){
        i=i-count;
        count=0;
        j=j-count-1;
        }
    }
    int length=t2-t1-1;
cout << length;
}

用string类的find和rfind分别搜索

z1,z2,z3的长度,从得到s1,s2,s3字符串之后再计算。

  int z=s.size(),z1,z2,z3;
    for(int i=0;i<z;i++){
        if(s[i]==',') break;
        s1=s1+s[i];
        x=i;
    }
     z1=s1.size();
    for(int i=x+2;i<z;i++){
            if(s[i]==',') break;
            s2=s2+s[i];
            x=i;
    }
    z2=s2.size();
    for(int i=x+2;i<z;i++){
        s3=s3+s[i];
    }
    z3=s3.size();

if (s1[i]!=s2[i]){
这里是s1[i] == s2[j]吧?

你这么写 ,z1,z2,z3都是零,所以一个循环都不会进去,最后直接输出-1。
剩下的修改就留给你自己完善吧

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632