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);
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值