给定两个字符串, A
和 B
。
A
的旋转操作就是将 A
最左边的字符移动到最右边。 例如, 若 A = 'abcde'
,在移动一次之后结果就是'bcdea'
。如果在若干次旋转操作之后,A
能变成B
,那么返回True
。
示例 1: 输入: A = 'abcde', B = 'cdeab' 输出: true 示例 2: 输入: A = 'abcde', B = 'abced' 输出: false
注意:
A
和B
长度不超过100
。
思路:获取B字符串的第一个字符c;如果在A字符串中存在和字符c相同的字符c1,从c1位置开始到A字符串的结束处所构成的A的子串a1,以及A字符串的0索引开始到c1位置构成的A的子串a2,构成新的字符串s=a2+a1;并判断s是否与B相同。
class Solution {
public boolean rotateString(String A, String B) {
if(A==null||B==null) {
return false;
}
if(A.length()!=B.length()) {
return false;
}
if(A.length()==0&&B.length()==0) {
return true;
}
char c=B.charAt(0);
for(int i=0;i<A.length();i++) {
if(c==A.charAt(i)) {
String s=getNewString(A,i);
if(s.equals(B)) {
return true;
}
}
}
return false;
}
/**
* 将s字符串从index索引位置到尾索引作为新字符串的前一段字符串,后一段字符串为s字符串从0索引位置到index索引的字符串
* @param s
* @param index
* @return
*/
public String getNewString(String s,int index) {
int len=s.length();
char ch[]=new char[len];
int i=0,j;
for(i=0,j=index;j<len;i++,j++) {
ch[i]=s.charAt(j);
}
for(j=0;j<index;i++,j++) {
ch[i]=s.charAt(j);
}
// System.out.println(new String(ch));
return new String(ch);
}
}