对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串 s1 和 s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。
例如
CDAA
是由AABCD
两次移位后产生的新串BCDAA
的子串,而ABCD
与ACBD
则不能通过多次移位来得到其中一个字符串是新串的子串。
输入样例:
AABCD CDAA
输出样例:
true
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
int len1 = a.length();
int len2 = b.length();
if (len1 >= len2) {
a += a; // 将字符串 a 变为自身的两倍,以便检查 b 是否为其循环子串
System.out.print(a.contains(b)); // 打印结果,判断 b 是否为 a 的子串
} else {
b += b; // 将字符串 b 变为自身的两倍,以便检查 a 是否为其循环子串
System.out.print(b.contains(a)); // 打印结果,判断 a 是否为 b 的子串
}
}
}