写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
时间: 2023-04-24 15:06:31 浏览: 167
可以先判断两个字符串的长度是否相等,如果不相等则一定不是旋转后的字符串。如果长度相等,则可以将原字符串复制一份,拼接在一起,判断拼接后的字符串中是否包含目标字符串即可。
以下是示例代码:
```python
def is_rotation(s1, s2):
if len(s1) != len(s2):
return False
s = s1 + s1
if s2 in s:
return True
else:
return False
```
示例:
```python
s1 = 'abcd'
s2 = 'cdab'
print(is_rotation(s1, s2)) # True
s3 = 'abcde'
s4 = 'cdeab'
print(is_rotation(s3, s4)) # True
s5 = 'abc'
s6 = 'cba'
print(is_rotation(s5, s6)) # False
```
相关问题
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 =aabcd和s2 = bcdaa,返回1 给定s1=abcd和s2=acbd,返回0. aabcd左旋一个字符得到abcda aabcd左旋两个字符得到bcdaa aabcd右旋一个字符得到daabc
题目中要求编写一个函数,判断一个字符串是否为另一个字符串旋转之后的结果。举例来说,给定s1="aabcd"和s2="bcdaa",那么s2是通过将s1右移两位得到的,因此符合条件,函数应该返回1。如果s2是通过对s1进行左移、上下翻转等操作得到的,那么不符合条件,函数应该返回0。
如果给定s1="aabcd"和s2="acbd",那么s2无法通过将s1旋转得到,函数应该返回0。
如果给定s1="aabcd"和s2="daabc",那么s2是通过将s1左移两位得到的,然后再翻转得到的,符合条件,函数应该返回1。
思路:因为只需要判断是否旋转一个字符串得到另一个字符串,因此可以重复将s1串连接到自身的末尾,然后判断s2是否为s1串中的一个子串即可。在判断子串的过程中,可以使用KMP等算法提高效率。
阅读全文