/**
* 字符和窜移位包含问题:
给定两个字符串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;
}
}
字符串问题之串移包含问题<Java实现>
最新推荐文章于 2021-03-15 09:23:35 发布