两串旋转

题目描述

如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A="12345",A的旋转词有"12345","23451","34512","45123"和"51234"。对于两个字符串A和B,请判断A和B是否互为旋转词。

给定两个字符串AB及他们的长度lenalenb,请返回一个bool值,代表他们是否互为旋转词。

测试样例:

"cdab",4,"abcd",4
返回:true

题解

算法思路:

  1. 判断str1和str2是否长度相等;
  2. 若长度相等,生成str1与str1的大字符串;
  3. 用KMP算法判断大字符串中是否含有str2。

class Rotation {
public:
    bool chkRotation(string A, int lena, string B, int lenb) {
        // write code here
        string tmp;
        if(lena != lenb) return false;
        tmp = A + A;
        if(tmp.find(B) != -1) return true;
        return false;
    }
};

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A="12345",A的旋转词...
    熊白白阅读 266评论 0 0
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,094评论 0 2
  • 如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A="12345",A的旋转词...
    X_Y阅读 259评论 0 0
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 6,048评论 2 16
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 3,418评论 0 7

友情链接更多精彩内容