📅  最后修改于: 2023-12-03 14:43:04.114000             🧑  作者: Mango
在Java编程中,经常会遇到需要检查字符串是否相互旋转的情况,例如判断“abcd”和“bcda”是否相互旋转。本文将介绍两种检查字符串是否相互旋转的方法,分别是利用字符串拼接与利用字符串包含。
利用字符串拼接的方式非常简单,只需要把一个字符串和它的旋转字符串进行拼接,然后判断另一个字符串是否是这个拼接字符串的子串即可。
public boolean isRotation(String s1, String s2) {
if (s1.length() != s2.length()) {
return false;
}
String s3 = s1 + s1;
return s3.contains(s2);
}
以上代码中,首先判断两个字符串的长度是否相等,如果不相等就直接返回false。然后将第一个字符串拼接成一个新的字符串s3,如果第二个字符串s2是s3的子串,则证明s1和s2是相互旋转的。
利用字符串包含的方式也比较简单,只需要判断两个字符串是否包含相同的字符即可。具体实现过程为,先判断两个字符串的长度是否相等,如果不相等则返回false,否则将两个字符串分别拆成单个字符,并将它们组成一个字符数组。然后对其中任意一个字符数组进行循环,每次把第一个字符取出来放到字符数组的最后一个位置,然后将得到的字符数组转换成字符串,再判断另一个字符串是否包含此字符串即可。
public boolean isRotation(String s1, String s2) {
if (s1.length() != s2.length()) {
return false;
}
char[] array1 = s1.toCharArray();
char[] array2 = s2.toCharArray();
for (int i = 0; i < array1.length; i++) {
// 将第一个字符移动到最后一个位置
char temp = array1[0];
for (int j = 0; j < array1.length - 1; j++) {
array1[j] = array1[j + 1];
}
array1[array1.length - 1] = temp;
// 判断是否包含相同字符串
if (String.valueOf(array1).equals(String.valueOf(array2))) {
return true;
}
}
return false;
}
以上代码中,首先判断两个字符串的长度是否相等,如果不相等就直接返回false。然后将两个字符串转换成字符数组,对其中任意一个字符数组进行循环,每次把第一个字符取出来放到最后一个位置,然后将得到的字符数组转换成字符串,再判断另一个字符串是否包含此字符串即可。
以上就是利用字符串拼接和利用字符串包含两种方式来判断字符串是否相互旋转的方法。在实际开发中,可以根据具体情况来选择合适的方法,既保证了代码的可读性和可维护性,又提高了开发的效率。