给定两个字符串,A 和 B.
A 的旋转操作就是将 A最左边的字符移动到最右边。例如,若 A='abcde',在移动一次之后结果就是'bcdea'如果在若干次调整操作之后,A能变成B,那么返回True:如果不能匹配成功,则返回false
java
import java.util.Scanner;
/**
* @author gyf
* @ClassName Test
* @Date 2024/8/2 11:08
* @Version V1.0
* @Description : 方法一
*/
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个字符串:");
String str1 = scanner.next();
System.out.println("请输入第二个字符串:");
String str2 = scanner.next();
boolean check = check(str1, str2);
System.out.println(check);
}
/**
* @Description: 旋转字符串,把左侧的字符串移动到右侧去
* @Param: [str] 旋转前的字符串
* @return: String 旋转后的字符串
* @Author: gyf
* @Date: 13:40 2024/8/3
*/
public static String rotate(String str) {
// 方法一: 使用subString 进行截取,把左侧的字符截取出来拼接到右侧去
// 方法二: 可以把字符串先变成一个字符数组,然后调整里面的数据,最后拼接成字符串
char first = str.charAt(0);
String end = str.substring(1);
return end + first;
}
public static boolean check(String strA, String strB) {
// 长度不等 直接返回false
if (strA.length() != strB.length()) {
return false;
}
// 旋转的次数
for (int i = 0; i < strA.length(); i++) {
strA = rotate(strA);
if (strA.equals(strB)) {
return true;
}
}
return false;
}
}
java
import java.util.Scanner;
/**
* @author gyf
* @ClassName Test
* @Date 2024/8/2 11:08
* @Version V1.0
* @Description :方法二:可以把字符串先变成一个字符数组,然后调整里面的数据,最后拼接成字符串
*/
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个字符串:");
String str1 = scanner.next();
System.out.println("请输入第二个字符串:");
String str2 = scanner.next();
System.out.println(check(str1, str2));
}
// 把字符串变成字符数组
public static char[] getArray(String str) {
char[] chars = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
chars[i] = str.charAt(i);
}
return chars;
}
// 旋转的拼接操作
public static String rotate(char[] chars) {
StringBuilder sb = new StringBuilder("");
//将后面的字符放到前面
for (int i = 1; i < chars.length; i++) {
sb.append(chars[i]);
}
//再把第一个字符放到最后
sb.append(chars[0]);
// 返回拼接的字符串
return sb.toString();
}
public static boolean check(String str1, String str2) {
if (str1.length() != str2.length()) {
return false;
}
// 旋转的次数
for (int i = 0; i < str1.length(); i++) {
str1 = rotate(getArray(str1));
if (str1.equals(str2)) {
return true;
}
}
return false;
}
}
java
import java.util.Scanner;
/**
* @author gyf
* @ClassName Test
* @Date 2024/8/2 11:08
* @Version V1.0
* @Description :方法二简化版本
*/
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个字符串:");
String str1 = scanner.next();
System.out.println("请输入第二个字符串:");
String str2 = scanner.next();
System.out.println(check(str1, str2));
}
// 旋转的拼接操作
public static String rotate(String str) {
// 调用方法将字符串转换为字符数组
char [] arr = str.toCharArray();
char first = arr[0];
for (int i = 1; i < arr.length; i++) {
// 把后面的元素往前移动
arr[i-1] = arr[i];
}
// 把第一个元素放到最后
arr[arr.length-1] = first;
String strs = new String(arr);
return strs;
}
public static boolean check(String str1, String str2) {
if (str1.length() != str2.length()) {
return false;
}
// 旋转的次数
for (int i = 0; i < str1.length(); i++) {
str1 = rotate(str1);
if (str1.equals(str2)) {
return true;
}
}
return false;
}
}