java
package String;
public class Demo_14 {
/**
* 主函数执行字符串旋转比较的操作
*/
public static void main(String[] args) {
String A="abcde";
String B="ABC";
boolean result=check(A,B);
System.out.println(result);
}
/**
检查通过旋转字符串A是否能得到字符串B
输入的第一个字符串
需要比较的目标字符串
如果通过旋转A可以得到B,则返回true;否则返回false
*/
public static boolean check(String A,String B){
// 遍历字符串A的每一位字符
for (int i = 0; i < A.length(); i++) {
// 调用r方法将字符串A进行一次旋转
A=r(A);
// 输出当前旋转后的字符串A,用于调试和理解
System.out.println(A);
// 如果旋转后的字符串A与字符串B相等,则返回true
if(A.equals(B)){
return true;
}
}
// 如果所有旋转操作都不能使A变为B,则返回false
return false;
}
/**
* 旋转字符串,将字符串的第一个字符移动到末尾
* str 需要旋转的字符串
* 旋转后的字符串
*/
public static String r(String str){
// 获取字符串长度
int len=str.length();
// 获取并保存字符串的第一个字符
char temp=str.charAt(0);
// 将字符串的第一个字符移动到末尾,并返回新的字符串
str=str.substring(1)+temp;
return str;
}
}
方法二:
java
package String;
/**
* Demo_14_case2 类用于演示字符串旋转比较的示例
*/
public class Demo_14_case2 {
/**
* 主函数执行字符串旋转比较操作
* @param args 命令行参数
*/
public static void main(String[] args) {
String A="abcde";
String B="bcdea";
boolean result=check(A,B);
System.out.println(result);
}
/**
* 检查通过旋转字符串A是否能得到字符串B
* @param A 输入的第一个字符串
* @param B 需要匹配的目标字符串
* @return 如果通过旋转字符串A可以得到字符串B,则返回true;否则返回false
*/
public static boolean check(String A,String B){
// 遍历字符串A的每一位字符
for (int i = 0; i < A.length(); i++) {
// 对字符串A进行一次旋转操作
A=r(A);
// 如果旋转后的字符串A与字符串B相等,则返回true
if(A.equals(B)){
return true;
}
}
// 如果经过所有旋转操作后,字符串A都无法与字符串B相等,则返回false
return false;
}
/**
* 旋转字符串,将字符串的第一个字符移动到末尾
* @param str 需要旋转的字符串
* @return 旋转后的字符串
*/
public static String r(String str){
char[] arr=str.toCharArray();
char first=arr[0];
// 将字符串的第一个字符移动到最后一个位置,其他字符向前移动一位
for (int i = 1; i < str.length(); i++) {
arr[i-1]=arr[i];
}
arr[arr.length-1]=first;
String result=new String(arr);
return result;
}
}