如何检查2个字符串是否相互旋转?
给定 2 个字符串,设计一个函数,可以检查它们是否相互旋转而不对其进行任何更改?返回值是布尔值。
例如ABCD、ABDC,它们不是旋转。返回 false
ABCD、CDAB 或 DABC 是旋转。返回真。
我的解决方案:
将其中一个向右或向左移动一个位置,然后在每次迭代时比较它们。 如果它们在所有迭代中都不相等,则返回 false。否则,返回 true。
是O(n)。还有其他更有效的解决方案吗? 如果它们的内容无法更改怎么办?
谢谢
Given 2 strings, design a function that can check whether they are rotations to each other without making any changes on them ? The return value is boolean.
e.g ABCD, ABDC, they are not rotations. return false
ABCD, CDAB or DABC are rotations. return true.
My solution:
shift one of them to right or left one position and then compare them at each iteration.
If they are not equal at all iterations, return false. Otherwise, return true.
It is O(n). Are there other more efficient solutions ?
What if the contents of them cannot be changed ?
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
将给定字符串与给定字符串连接起来。
在连接字符串中搜索目标字符串。
例子:
Concatenate the given string with the given string.
Search for the target string in the concatenated string.
Example:
使用两个索引变量可能更有效,而不是移动其中之一。每次从 0 开始,另一个从每个可能的位置(0 到 N-1)开始,然后递增 模组N。
Rather than shifting one of them, it might be more efficient to use two index variables. Start one at 0 each time and the other at each of the possible positions (0 to N-1) and increment it mod N.
如果无法修改字符串,只需取出 string1 的第一个字符并将其与 string2 的每个字符进行比较。当获得匹配项时,将 string1 的第二个字符与 string2 的下一个字符进行比较,依此类推。
伪代码:
If you can't modify the strings, just take the first character of string1 and compare it to each character of string2. When you get a match, compare the second char of string1 to the next char of string2, and so on.
Pseudocode:
一个简单的例子是:
A simple one would be:
https://dsconceptuals.blogspot.in /2016/10/a-program-to-check-if-strings-are.html
https://dsconceptuals.blogspot.in/2016/10/a-program-to-check-if-strings-are.html