字符串 v 等于左右旋转 [关闭]

Posted

技术标签:

【中文标题】字符串 v 等于左右旋转 [关闭]【英文标题】:string v equal to left and right rotation [closed] 【发布时间】:2020-04-27 16:43:42 【问题描述】:

L(X) 定义为将字符串 X 的所有字符向左移动一步并将第一个字符移动到末尾。 R(X) 定义为将字符串 X 的所有字符向右移动一步并将最后一个字符移动到开头。 例如,L("abcd") = "bcda" 和 R("abcd") = "dabc"

我想知道是否存在一个与 S 长度相同的字符串 V 使得 L(V)=S 和 R(V)=S 都成立。

questio 基本上是当字符串的左旋转和右旋转相等时。 对于较小的字符串,我的逻辑没问题。我无法解码更大大小的字符串的逻辑。

【问题讨论】:

我不明白为什么大字符串的逻辑会有所不同。请分享您的算法和您编写的代码。 @cigien 对于字符串“ab”,这是可能的,对于“aaaa”是可能的,对于“abcd”是不可能的。如何概括事物? "是的,存在这样的字符串" @MooingDuck 我认为所有字符都应该相等或大小为 1 和 2 的字符串是可能的 否则不可能 【参考方案1】:

请注意,L(R(x)) = R(L(x)) = x。也就是说,R 和 L 互为倒数。自己验证 L(V) = R(V) = S 当且仅当 S = R(R(S)) 时始终成立。

这就是你要检查的逻辑。请注意,您实际上不必执行旋转,您可以简单地检查 S[i] == S[(i+2)%n] 其中 n 是否是字符串的长度。

【讨论】:

@orip 意味着我必须检查原始字符串和它的反向是否相等。如果相等,则可能,否则不可能。 @sushan 我从来没有说过任何关于反向的事情。请重新阅读我的答案。 @orip 好的先生,现在我明白了。谢谢

以上是关于字符串 v 等于左右旋转 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer面试题42:单词翻转顺序&左右旋转字符串

比较两个字符串以查看它们是不是旋转[关闭]

算法系列——字符串旋转

算法系列——字符串旋转

算法系列——字符串旋转

算法系列——字符串旋转