Java函数如何判断两个字符串是否互为旋转字符串?
发布时间:2023-06-21 12:05:37
在Java中,要判断两个字符串是否互为旋转字符串,可以使用一种比较常见的方法:将其中一个字符串复制一遍,然后查看第二个字符串是否是这个复制字符串的子串。
具体来说,可以先判断这两个字符串的长度是否相等,若不相等,则肯定不是互为旋转字符串。如果长度相等,则可以将其中一个字符串复制一遍,得到新的字符串,然后判断第二个字符串是否是这个新字符串的子串,如果是,则这两个字符串互为旋转字符串。代码如下:
public static boolean isRotation(String str1, String str2) {
if (str1.length() != str2.length()) {
return false;
}
String str3 = str1 + str1;
return str3.contains(str2);
}
其中,isRotation()函数接收两个字符串str1和str2作为参数,返回一个boolean类型的值,表示这两个字符串是否互为旋转字符串。
在函数中,首先判断这两个字符串的长度是否相等,如果不相等,则直接返回false;如果相等,则将str1复制一遍,得到新的字符串str3,然后判断str2是否是str3的子串,如果是,则返回true,表示这两个字符串互为旋转字符串;否则返回false,表示不是互为旋转字符串。
下面来看一个具体的例子,判断字符串AACD和ACDA是否互为旋转字符串:
System.out.println(isRotation("AACD", "ACDA")); // 输出 true
根据以上方法判断后,这两个字符串是互为旋转字符串。
在实际应用中,这种方法的时间复杂度是比较高的,因为需要将一个字符串复制一遍,再进行子串查找。还有一种更加高效的方法,可以用KMP算法对字符串进行匹配,具体实现可以参考其他文章。
