对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串 s_1s1 和 s_2s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。
通过的代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
String a=scanner.next();
String b=scanner.next();
if(a.length()>b.length()) {
StringBuilder sb = new StringBuilder(a);
int count=0;
for (int i = 0; i < a.length(); i++) {
char ch = sb.charAt(0);
sb.deleteCharAt(0);
sb.append(ch);
String str2 = sb.toString();
if(str2.contains(b)) {
count++;
break;
}
}
if(count==0) {
System.out.println("false");
}else {
System.out.println("true");
}
}else if(a.length()<b.length()) {
String c=a;
String d=b;
StringBuilder sb = new StringBuilder(d);
int count=0;
for (int i = 0; i < c.length(); i++) {
char ch = sb.charAt(0);
sb.deleteCharAt(0);
sb.append(ch);
String str2 = sb.toString();
if(str2.contains(c)) {
count++;
break;
}
}
if(count==0) {
System.out.println("false");
}else {
System.out.println("true");
}
}else if(a.length()==b.length()){
if(a.equals(b)) {
System.out.println("true");
}else {
System.out.println("false");
}
}
}
}