标题:Java经典问题:连个字符串互为回环变位
问题描述
给定两个字符串,在不使用任何额外空间的情况下,判断这两个字符串是否互为回环变位。回环变位指的是将字符串中任意位置的字符剪切并粘贴到字符串末尾所得到的字符串。
例如,字符串 "abcde" 和 "cdeab" 就是互为回环变位的。
解决思路
对于给定的两个字符串 str1 和 str2,我们可以采取如下步骤:
-
首先,判断两个字符串的长度是否相等。如果不相等,则这两个字符串不可能互为回环变位。
-
然后,将字符串 str1 拼接在自己的后面形成新的字符串 str3,即 str3 = str1 + str1。
-
最后,判断字符串 str2 是否是字符串 str3 的子串。如果是,则这两个字符串互为回环变位,否则不是。
代码实现
public static boolean isRotation(String str1, String str2) {
if (str1 == null || str2 == null || str1.length() != str2.length()) {
return false;
}
String str3 = str1 + str1;
return str3.indexOf(str2) != -1;
}
示例说明
- 示例一:
String str1 = "abcde";
String str2 = "cdeab";
boolean result = isRotation(str1, str2);
System.out.println(result); // true
解释:将字符串 "abcde" 拼接在自己后面,得到字符串 "abcdeabcde"。字符串 "cdeab" 是字符串 "abcdeabcde" 的子串,因此字符串 "abcde" 和 "cdeab" 互为回环变位。
- 示例二:
String str1 = "abcdefg";
String str2 = "cdefgab";
boolean result = isRotation(str1, str2);
System.out.println(result); // true
解释:将字符串 "abcdefg" 拼接在自己后面,得到字符串 "abcdefgabcdefg"。字符串 "cdefgab" 是字符串 "abcdefgabcdefg" 的子串,因此字符串 "abcdefg" 和 "cdefgab" 互为回环变位。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java经典问题:连个字符串互为回环变位 - Python技术站