首页 > 试题广场 >

旋转字符串

[编程题]旋转字符串
  • 热度指数:13617 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
字符串旋转:
给定两字符串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
class Solution:
    def solve(self , A: str, B: str) -> bool:
        # write code here
        booll = False
        for i in range(len(A)):
            s = A[i::] + A[0:i]
            if s == B:
                booll = True
            else:
                continue
        return booll
发表于 2022-08-28 18:00:31 回复(0)
class Solution:
    def solve(self , A: str, B: str) -> bool:
        # write code here
        for i in range(len(A)):
            if A[:i]+A[i:] == B&nbs***bsp;A[i:]+A[:i] == B:
                return True
        return False

发表于 2022-07-07 22:29:05 回复(0)
class Solution:
    def solve(self, A: str, B: str) -> bool:
        for i in range(len(A)):
            A1 = A[i:] + A[0:i]
            if A1 == B:
                return True
        return False

发表于 2022-06-21 10:52:16 回复(0)
class Solution:
    def solve(self , A: str, B: str) -> bool:
        # write code here
        if len(A) != len(B): return False
        if A == B: return True
        for i in range(len(A)):
            trans = A[i:]+ A[:i]
            if trans == B:
                return True
        return False

发表于 2022-04-19 16:57:10 回复(0)
class Solution:
    def solve(self , A: str, B: str) -> bool:
        # write code here
        t=False
        for i in range(len(A)):
            if A[i:]+A[:i]== B :
                t=True
                break
        return t

发表于 2022-03-21 22:50:48 回复(0)
class Solution:
    def solve(self , A: str, B: str) -> bool:
        return len(A)==len(B) and B in A+A

发表于 2022-01-12 08:42:39 回复(0)
# 萌新看过来
class Solution:
    def solve(self , A: str, B: str) -> bool:
        # write code here
        if A == B:
            return True
        elif len(A) != len(B):
            return False
        for i in range(len(A) - 1):
            a = A[0:i + 1]
            b = A[i + 1:]
            if b + a == B:
                return True
        return False
发表于 2021-12-19 21:46:19 回复(0)
python 简单逐位比较  见笑了
class Solution:
    def solve(self , A , B ):
        m = len(A)
        n = len(B)
        if m != n:
            return False
        # 判断相同位置字符
        for j in range(m):
            # A字符串从0开始
            # B字符串每逐位位置作为起始比较
            if self.comp(A, B, 0, j):
                return True
        # 不一样
        return False
    
    # 逐位比较字符串
    def comp(self, string, move, i, j):
        length = len(string)
        # 逐位比较 j索引使用%来旋转
        while i < length and string[i] == move[j%length]:
            i += 1
            j += 1
        # 匹配完整性判断
        return True if i == length else False


发表于 2021-08-20 11:32:52 回复(0)