还有这么美妙的解法😄
思路之一:
1、假如 A="abcd" 则 A+A = "abcdabcd"
2、如果B 满足 题目的条件,则B 一定属于 A+A 里面的一个子串
import java.util.*;
public class Solution {
/**
* 旋转字符串
* @param A string字符串
* @param B string字符串
* @return bool布尔型
*/
public boolean solve (String A, String B) {
//特殊情况处理
if(A==null||B==null||A.length()<2||B.length()<2||A.length()!=B.length()){
return false;
}
//日 这么巧妙
return (A+A).contains(B);
}
}思路之二:
1、A和B长度不等,则返回 false
2、A个B长度相等,不断的切割 A为head和tail 两部分
3、如果B中同时包含 head和tail 两部分,则返回true
4、如果一直没找到,则返回false
import java.util.*;
public class Solution {
/**
* 旋转字符串
* @param A string字符串
* @param B string字符串
* @return bool布尔型
*/
public boolean solve (String A, String B) {
// write code here
if(A==null||B==null||A.length()<2||B.length()<2||A.length()!=B.length()){
return false;
}
int i=1;
while(i<A.length()){
String headStr = A.substring(0,i);
String tailStr = A.substring(i);
if(B.contains(headStr)&&B.contains(tailStr)){
return true;
}
i++;
}
return false;
}
}
京公网安备 11010502036488号