字符串问题之串移包含问题<Java实现>

/**
 * 字符和窜移位包含问题:
给定两个字符串s1(源字符串)和s2(目标字符串),
判断s2能否被通过s1作循环移位得到的字符串所包含。

1.循环移位,遍历各种可能,再判断字符串包含问题

2.利用性质(如果s2能被通过循环移位s1得到的字符串所包含,
则s2必须为s1.concat(s1)的字串)只要一次的字符串包含判断。

@author Sking
 */
package 字符串问题;

public class 串移包含 {
	
	/**
	 * 对源字符串进行循环移位,再进行是否包含目标字符串的判断,
	 * 从而遍历所有的可能性。
	 * @param src 源字符串
	 * @param dst 目标字符串
	 * @return  如果目标字符串被源字符串循环移位
	 *                        后的字符串包含,则返回true,否则false
	 */
	public static boolean rotateAndContains0(String src,String dst){
		int len=src.length();
		char[] srcArray=src.toCharArray();
		for(int i=0;i<len;i++){
			char tempChar=srcArray[0];
			for(int j=0;j<len-1;j++)
				srcArray[j]=srcArray[j+1];
			srcArray[len-1]=tempChar;
			if(new String(srcArray).contains(dst))
				return true;
		}
		return false;
	}
	
	/**
	 * 如果源字符串s1通过循环移位得到的字符串能包含目标
	 * 字符串s2,则目标字符串s2必为s1s1的字串。
	 * @param src 源字符串
	 * @param dst 目标字符串
	 * @return  如果目标字符串被源字符串循环移位
	 *                        后的字符串包含,则返回true,否则false
	 */
	public static boolean rotateAndContains1(String src,String dst){
		String srcsrc=src.concat(src);
		if(srcsrc.contains(dst))
			return true;
		else
			return false;
	}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值