字符串旋转:
给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(都不为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。
例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同返回true。
2个不为空的字符串(说明:输入一个字符串以英文分号";"分割为2个字符串)
例如:youzan;zanyou 即为A=‘youzan’,B=‘zanyou’
输出true或false(表示是否能按要求匹配两个字符串)
youzan;zanyou
true
youzan;zyouan
false
/* 我的想法是将字符串A循环移位,每移动一次,就和字符串B进行比较,知道与字符串相等或者字符串A移动结束 */ import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); String[] strarr = input.nextLine().split(";"); String str1 = strarr[0]; String str2 = strarr[1]; //将str1进行移位 for(int i = 0;i<str1.length();i++){ str1 = str1.substring(1)+String.valueOf(str1.charAt(0)); if(str1.equals(str2)){ System.out.println(true); return; } } System.out.println(false); } }
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); String word1 = str.split(";")[0]; String word2 = str.split(";")[1]; if (word1.length() != word2.length()) { System.out.println("false"); } else { System.out.println((word1 + word1).contains(word2)); } } }
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String[] split = s.split(";");
String s1 = split[0];
String s2 = split[1];
for(int i=0;i<s1.length();i++){
boolean flag = (s1.substring(i + 1) + s1.substring(0, i + 1)).equals(s2);
if(flag){
System.out.println(true);
return;
}
}
System.out.println(false);
}
}