前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符串旋转

字符串旋转

作者头像
喜欢ctrl的cxk
发布2019-11-08 15:51:43
3720
发布2019-11-08 15:51:43
举报
文章被收录于专栏:Don的成长史Don的成长史

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42449444/article/details/102006068

题目描述:

给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(都不为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。

例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同返回true。

输入描述:

2个不为空的字符串(说明:输入一个字符串以英文分号";"分割为2个字符串) 例如:youzan;zanyou 即为A=‘youzan’,B=‘zanyou’。

输出描述:

输出true或false(表示是否能按要求匹配两个字符串)。

输入样例1:

代码语言:javascript
复制
youzan;zanyou

输出样例1:

代码语言:javascript
复制
true

输入样例2:

代码语言:javascript
复制
youzan;zyouan

输出样例2:

代码语言:javascript
复制
false

解题思路:

水题,直接暴力破解就完事啦。

AC代码:

代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)

int main()
{
    string s;
    getline(cin,s);
    int _ = s.find(';');  
    string sa = s.substr(0,_);   //获取子串sa
    int lena = sa.length();    
    string sb = s.substr(_+1,s.length()-1);  //获取子串sb
    int lenb = sb.length();    
    //cout << sa << endl << sb << endl;
    bool flag = false;   //判断字符串sa旋转后是否能等于sb
    Up(i,1,lena)    //以i为对称点来进行字符串旋转
    {
        string t = sa.substr(i,lena-i) + sa.substr(0,i);
        //cout << t<< endl;
        if(t == sb) 
        {
            flag = true;
            break;
        }
    }
    printf("%s\n",flag?"true":"false");
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 输入描述:
  • 输出描述:
  • 输入样例1:
  • 输出样例1:
  • 输入样例2:
  • 输出样例2:
  • 解题思路:
  • AC代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档