写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
时间: 2023-06-04 08:08:20 浏览: 177
好的,这是一个经典的字符串问题,我很乐意回答。下面是一个示例函数的实现:
bool isRotation(string s1, string s2) {
// 如果两个字符串长度不同,则肯定不可能旋转得到
if (s1.length() != s2.length()) {
return false;
}
// 将 s1 复制一倍,然后判断 s2 是否是连续两个 s1 的子串
string s = s1 + s1;
return (s.find(s2) != string::npos);
}
如果该函数返回 true,则表示 s2 是 s1 旋转得到的字符串,否则返回 false。例如,如果 s1 是 "coding",s2 是 "ingcod",则该函数应该返回 true。希望这能帮到你!
相关问题
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定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等算法提高效率。
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定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等算法提高效率。
阅读全文