m0_73292724 2022-08-21 09:54 采纳率: 91.7%
浏览 27
已结题

字符串移位包含问题,代码不知错哪

问题遇到的现象和发生背景 ;样例通过了,代码在平台判为错,请问那个地方的问题,原因是什么?不用直接给我代码,
问题相关代码,请勿粘贴截图

字符串移位包含问题
描述
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。
输入
一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。
输出
如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。
样例输入
AABCD CDAA
样例输出
true



#include <stdio.h>
#include <string.h>
int main()
{
    char s1[35],s2[35],t;
    scanf("%s %s",s1,s2);
    int la=strlen(s1),lb=strlen(s2),i,j,m=0;
    for(i=0;i<la-1;i++){
        t=s1[0];
        for(j=0;j<la-1;j++){
            s1[j]=s1[j+1];
        }
        s1[la-1]=t;
//        printf("%s %s\n",s1,s2);
        
        if(strstr(s1,s2)!=NULL||strstr(s2,s1)!=NULL){
            printf("true");
            m++;
            break;
        }
    }
if(m==0){
    for(i=0;i<lb-1;i++){
        t=s2[0];
        for(j=0;j<lb-1;j++){
            s2[j]=s2[j+1];
        }
        s2[lb-1]=t;
        if(strstr(s2,s1)!=NULL||strstr(s1,s2)!=NULL){
            printf("true");
            m++;
            break;
        }
    }
}
    if(m==0)
        printf("false");
    return 0;
} 
  • 写回答

1条回答 默认 最新

  • 雨下,听风 2022-08-21 14:14
    关注

    题主你好:


    不用这么麻烦:
    思路说下,把s1复制一遍,s1变成了s1+s1。在新的s1里,只要有s2,遍历就行;如果没有,就false
    #include <iostream>
    #include <cstring>
    using namespace std;
    int main()
    {
        string s1, s2, s;
        cin >> s1 >> s2;//就是输入(scanf)
        if (s1.size() < s2.size()){
            s = s1;
            s1 = s2;
            s2 = s;
        }
        s1 = s1+s1; // 循环左移动相当于复制,妙绝!
        if (s1.find(s2) == -1) cout << "false" << endl;//就是输出(=printf),endl=\n;
        else cout << "true" << endl;
        return 0;
    }
    

    ps:程序为C++程序,保存时后缀名请保存为xxx.cpp

    解惑请采纳
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月5日
  • 已采纳回答 8月28日
  • 修改了问题 8月21日
  • 创建了问题 8月21日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系