列表

详情


NC114. 旋转字符串

描述

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

例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同,返回true。
再如:如果A=‘abcd’,B=‘abcd’,A切成‘abcd’和''(空串),换位后可以得到B,返回true。

数据范围:A,B字符串长度满足 ,保证字符串中仅包含小写英文字母和阿拉伯数字
进阶: 时间复杂度 ,空间复杂度

示例1

输入:

"youzan","zanyou"

输出:

true

示例2

输入:

"youzan","zyouan"

输出:

false

示例3

输入:

"nowcoder","nowcoder"

输出:

true

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 324KB, 提交时间: 2021-05-24

class Solution {
public:
    /**
     * 旋转字符串
     * @param A string字符串 
     * @param B string字符串 
     * @return bool布尔型
     */
    bool solve(string A, string B) {
        // write code here
        int j=B.size()/2;
        for(int i=0;i<A.size()/2;i++){
            if(A[i]!=B[j])    break;
            else    j++;
        }
        if(j==B.size())    return true;
        return false;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 324KB, 提交时间: 2021-05-20

class Solution {
public:
    /**
     * 旋转字符串
     * @param A string字符串 
     * @param B string字符串 
     * @return bool布尔型
     */
    bool solve(string A, string B) {
        // write code here
        for(int i=1; i<A.size(); ++i){
            string a = A.substr(0, i);
            string b = A.substr(i);
            if(b + a == B){
                return true;
            }
        }
        return false;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 324KB, 提交时间: 2021-02-02

class Solution {
public:
    /**
     * 旋转字符串
     * @param A string字符串 
     * @param B string字符串 
     * @return bool布尔型
     */
    bool solve(string A, string B) {
        // write code here
        for(int i=0; i<A.length()-1; i++){
            //A = A.substr(1,A.length()-1)+A[0];
            //if(A == B){
            //    return true;
            //}
            string newA;
            for(int j=i+1; j<A.length(); j++)
                newA = newA+A[j];
            for(int j=0; j<=i; j++)
                newA = newA+A[j];
            if(newA == B){
                return true;
            }
        }
        return false;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 332KB, 提交时间: 2020-11-16

class Solution {
public:
    /**
     * 旋转字符串
     * @param A string字符串 
     * @param B string字符串 
     * @return bool布尔型
     */
    bool solve(string a, string b) {
        // write code here
        if(a.size()!=b.size()) return false;
        string s=a+a;
        
        if(s.find(b)!=string::npos)
            return true;
        else return false;
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 344KB, 提交时间: 2021-05-02

class Solution {
public:
    /**
     * 旋转字符串
     * @param A string字符串 
     * @param B string字符串 
     * @return bool布尔型
     */
    bool solve(string A, string B) {
        // write code here
        for(int i  = 1; i < A.size(); i++)
        {
            string str1 = A.substr(0, i);
            string str2 = A.substr(i);
            if (B.compare(str2+str1) == 0)
            {
                return true;
            }
        }
        return false;
    }
};

上一题