LeetCode796. 旋转字符串

给定两个字符串, 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);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_40550726/article/details/81228652
今日推荐