字符串 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 等于左右旋转 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章