还有这么美妙的解法😄
思路之一:
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; } }