两串旋转

作者: SmallRookie | 来源:发表于2018-12-24 21:29 被阅读0次

    题目描述

    如果对于一个字符串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;
        }
    };
    
    

    相关文章

      网友评论

        本文标题:两串旋转

        本文链接:https://www.haomeiwen.com/subject/zqetlqtx.html