/**
* 字符和竄移位包含問題:
給定兩個字符串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;
}
}
字符串問題之串移包含問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.