写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
时间: 2023-04-24 17:06:31 浏览: 102
可以先判断两个字符串的长度是否相等,如果不相等则一定不是旋转后的字符串。如果长度相等,则可以将原字符串复制一份,拼接在一起,判断拼接后的字符串中是否包含目标字符串即可。
以下是示例代码:
```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
```
相关问题
用c语言写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
在C语言中,你可以使用如下的代码来判断一个字符串是否是另一个字符串旋转之后的字符串:
```
#include <stdio.h>
#include <string.h>
// 判断str1是否为str2旋转之后的字符串
// 如果是,返回1;否则返回0
int is_rotated(char *str1, char *str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len1 != len2) {
return 0; // 长度不同,显然不是旋转字符串
}
char temp[2 * len1 + 1];
strcpy(temp, str1);
strcat(temp, str1); // 将str1复制到temp的后面
// 在temp中查找str2
// 如果能找到,说明str1是str2旋转之后的字符串
if (strstr(temp, str2) != NULL) {
return 1;
} else {
return 0;
}
}
int main() {
char str1[100] = "abcdefg";
char str2[100] = "cdefgab";
if (is_rotated(str1, str2)) {
printf("str2是str1旋转之后的字符串\n");
} else {
printf("str2不是str1旋转之后的字符串\n");
}
return 0;
}
```
上述代码实现的思路是:将字符串str1复制一份拼接到temp字符数组的末尾,然后在temp中查找str2。如果能找到,说明str1是str2旋转之后的字符串,否则不是。
用c语言写一个函数,判断一个字符串是否为回文字符串
好的,可以使用以下 C 语言代码实现判断一个字符串是否为回文字符串:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int len = strlen(str);
for (int i = 0; i < len/2; i++) {
if (str[i] != str[len-1-i]) {
return 0; // 不是回文字符串,返回0
}
}
return 1; // 是回文字符串,返回1
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
if (isPalindrome(str)) {
printf("%s 是回文字符串\n", str);
} else {
printf("%s 不是回文字符串\n", str);
}
return 0;
}
```
在上述代码中,`isPalindrome()` 函数接收一个字符串 `str`,返回一个整数值,1 表示 `str` 是回文字符串,0 表示 `str` 不是回文字符串。函数通过遍历字符串的前一半字符和后一半字符进行比较,如果发现不同则直接返回 0,否则遍历结束后返回 1。
在 `main()` 函数中,首先输入一个字符串,然后调用 `isPalindrome()` 函数判断它是否为回文字符串,并输出相应的结果。