1.问题:
旋转词的定义是,一个字符串 str1可以通过将任意的一段字符串移动到其末尾而得到字符串str2,就str1和 str2就互为旋转词,比如 “abcde” 和 “abcde”互为旋转词, “abcde”和 “cdeab”互为旋转词
“abcde”和 ”cdeba“就不是旋转词
2.思路:
? 可以循环遍历str1的时候,将str2重复一下,问题就转换成 str2字符串中是否含有字符串 str1,两层循环搞定即可
3.代码实现
public boolean isRoolWord(String str1, String str2){
if(str1 == null || str2 == null || str1.length() != str2.length()){
return false;
}
char[] strArr1 = str1.toCharArray();
// 复制一份字符串
chat[] strArr2 = (str2 + str2).toCharArray();
int j = 0;
for(int i=0; i < strArr1.length; ++i){
// 循环遍历字符数组 strArr2
while(++j < strArr2.length){
// 字符不相等,继续continue遍历
if(strArr1[i] != strArr2[j]){
continue;
}
// 在边界范围内,已经相等的字符两个字符串的下一个字符不相等的话,就继续 continue循环
if(i+1 < strArr1.length && j+1 < strArr2.length
&& strArr1[i+1] ! = strArr2[j+1]){
continue;
}
break;
}
// strArr2遍历完,但是 strArr1还没有遍历完,说明 str1和Str2不互为 旋转词
if(i+1 < strArr1.length && j>= strArr2.length){
return false;
}
}
return ture;
}
|