题目描述:
如果一个字符串123456,存在一些旋转字符串:
比如:
- 234561
- 345612
- 456123
- 561234
- 612345
那么如果给你两个字符串,如何判断它们存在这种关系?
解法1:
使用两层for循环遍历:
public static boolean findStr1(String s1,String s2){
if(s1.length()!=s2.length()){
return false;
}
char[] chars1 = s1.toCharArray();
char[] chars2 = s2.toCharArray();
for(int i=0;i<s1.length();i++){
int temp=i;//为内层循环提供初始位置
int count=0;//计数使用
for(int j=0;j<s2.length();j++){
//如果到末尾则从头开始
if(temp==s1.length()){
temp=0;
}
if(chars1[temp]==chars2[j]){
temp++;
count++;
continue;
}else {
break;
}
}
//如果相同字符的数量和s1的长度一致代表找到了
if(count==s1.length()){
return true;
}
}
解法2:
将字符串拼接判断子串:
public static boolean findStr2(String str1,String str2){
//先判断长度是否相同
if(str1.length()!=str2.length()){
return false;
}
//拼接两个字符串
String str3=str1+str1;
//使用String的contains判断是否是str3的子串
if(str3.contains(str2)){
return true;
}
return false;
}