忧默的小男孩 2022-09-07 16:27 采纳率: 94.4%
浏览 52
已结题

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

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

img

img

img

img


#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>

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;i<z;i++){
        if(s[i]==',') break;
        s1=s1+s[i];
        x=i;
    }
    for(int i=x+2;i<z;i++){
            if(s[i]==',') break;
            s2=s2+s[i];
            x=i;
    }
    for(int i=x+2;i<z;i++){
        s3=s3+s[i];
    }
    
        int t1=0,flag1=0;
    for(int i=0,j=0,count=0;i<z1;i++,j++){
        if(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;i<z1;i++,j++){
        if(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;
}

  • 写回答

5条回答 默认 最新

  • CSDN专家-link 2022-09-07 17:57
    关注

    用string类的find和rfind分别搜索

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月7日
  • 已采纳回答 9月7日
  • 创建了问题 9月7日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装