JAVA实现调整字符串
调整字符串
给定两个字符串,A和B。
A的旋转操作就是将A最左边的字符移动到最右边。
例如,若A='abcde',在移动一次之后结果就是'bcdea'.
如果在若干次调整操作之后,A能变成B,那么返回True。
如果不能匹配成功,则返回false
方法一:循环旋转法
public class task1 {public static void main(String[] args) {/*调整字符串给定两个字符串,A和B。A的旋转操作就是将A最左边的字符移动到最右边。例如,若A='abcde',在移动一次之后结果就是'bcdea'.如果在若干次调整操作之后,A能变成B,那么返回True。如果不能匹配成功,则返回false*/String A="abcde";String B="cdeab";Boolean result = tochange(A, B);System.out.println(result);}public static Boolean tochange(String A, String B) {// 首先检查两个字符串长度是否相同,长度不同肯定无法通过旋转匹配if (A.length() != B.length()) {return false;}// 遍历所有可能的旋转次数(最多旋转字符串长度次)for (int i = 0; i < A.length(); i++) {// 旋转操作:将第一个字符移到字符串末尾char first = A.charAt(0); // 获取字符串的第一个字符String end = A.substring(1); // 获取从第二个字符开始到末尾的子串A = end + first; // 将剩余部分与第一个字符拼接,完成一次旋转// 检查旋转后的A是否与B相等if (A.equals(B)) {return true; // 匹配成功,立即返回true}}// 如果所有可能的旋转都尝试过了仍未匹配,返回falsereturn false;}
}
方法二:字符串拼接法
A = "abcde" A + A = "abcdeabcde"所有可能的旋转: 原始: "abcde" ← 出现在位置0 旋转1次: "bcdea" ← 出现在位置1 旋转2次: "cdeab" ← 出现在位置2 旋转3次: "deabc" ← 出现在位置3 旋转4次: "eabcd" ← 出现在位置4
public class task1 {public static void main(String[] args) {/*调整字符串给定两个字符串,A和B。A的旋转操作就是将A最左边的字符移动到最右边。例如,若A='abcde',在移动一次之后结果就是'bcdea'.如果在若干次调整操作之后,A能变成B,那么返回True。如果不能匹配成功,则返回false*/String A="abcde";String B="cdeab";Boolean result = tochange(A, B);System.out.println(result);}public static Boolean tochange(String A, String B) {if (A.length() != B.length()) return false;return (A + A).contains(B);}
}