字符串移位包含的问题
2015-08-18 16:30
302 查看
/*
* 字符串移位包含的问题
* 给定两个字符串,要求判定s2是否能够被s1叫做循环移位得到的字符串包含.
* 例如给定 s1=AABCD,s2=CDAA,返回true;
* 给定 S1=ABCD, s2=ABCD,返回false
*/
public class QuestionAlia{
//方法 一: 利用java的 substring()及startsWith()方法
public static boolean isXunHuan(String text,String query){
for(int i=0;i<text.length();i++){
//text直接包含query的情况,判断query是否为text的某个后缀的前缀
if(text.substring(i).startsWith(query))
return true;
else{ //text通过循环移位,包含query的情况;
for(int j=query.length();j>0;j--){
/*
* 若text的某个后缀substring(i,length)是query的前缀(0,j),
* 且 text的子串substring(0,i)拥有某个前缀是 query的后缀substring(j)
*/
if(text.substring(i).equals(query.substring(0,j)) &&
text.substring(0,i).startsWith(query.substring(j)))
return true;
}
}
}
return false;
}
//方法 二:将text复制如: AABCD 变成 AABCDAABCD,再判断query是否为text的子串 ——以空间换时间
public static boolean isXunHuan2(String text,String query){
String newText=text+text;
for(int i=0;i<newText.length();i++){
//text直接包含query的情况,判断query是否为text的某个后缀的前缀
if(newText.substring(i).startsWith(query))
return true;
}
return false;
}
//方法三:C中strstr方法 ,使用char数组,并对text进行循环移位,再利用strstr(char[] src,char[] search)方法直接判断子串 .
public static boolean isXunHuan3(char[] text,char[] query){
for(int i=0;i<text.length;i++){
char tempchar=text[0];
int j;
for(j=0;j<text.length-1;j++)
text[j]=text[j+1];
text[j]=tempchar;
if(strstr(query,text)==0)
return true;
}
return false;
}
* 字符串移位包含的问题
* 给定两个字符串,要求判定s2是否能够被s1叫做循环移位得到的字符串包含.
* 例如给定 s1=AABCD,s2=CDAA,返回true;
* 给定 S1=ABCD, s2=ABCD,返回false
*/
public class QuestionAlia{
//方法 一: 利用java的 substring()及startsWith()方法
public static boolean isXunHuan(String text,String query){
for(int i=0;i<text.length();i++){
//text直接包含query的情况,判断query是否为text的某个后缀的前缀
if(text.substring(i).startsWith(query))
return true;
else{ //text通过循环移位,包含query的情况;
for(int j=query.length();j>0;j--){
/*
* 若text的某个后缀substring(i,length)是query的前缀(0,j),
* 且 text的子串substring(0,i)拥有某个前缀是 query的后缀substring(j)
*/
if(text.substring(i).equals(query.substring(0,j)) &&
text.substring(0,i).startsWith(query.substring(j)))
return true;
}
}
}
return false;
}
//方法 二:将text复制如: AABCD 变成 AABCDAABCD,再判断query是否为text的子串 ——以空间换时间
public static boolean isXunHuan2(String text,String query){
String newText=text+text;
for(int i=0;i<newText.length();i++){
//text直接包含query的情况,判断query是否为text的某个后缀的前缀
if(newText.substring(i).startsWith(query))
return true;
}
return false;
}
//方法三:C中strstr方法 ,使用char数组,并对text进行循环移位,再利用strstr(char[] src,char[] search)方法直接判断子串 .
public static boolean isXunHuan3(char[] text,char[] query){
for(int i=0;i<text.length;i++){
char tempchar=text[0];
int j;
for(j=0;j<text.length-1;j++)
text[j]=text[j+1];
text[j]=tempchar;
if(strstr(query,text)==0)
return true;
}
return false;
}
相关文章推荐
- dedecms 织梦利用arcpagelist标签实现首页arclist分页
- 重构11-20
- iOS开发问题——简单的验证码倒计时显示
- python脚本测试网站响应时间
- nodejs中如何创建和加载模块
- php readfile(),解决下载文件因时文件太大而无法找到文件
- 导出导入之IMP-00010: 不是有效的导出文件, 头部验证失败
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- [网狐]前台控制帐号生成
- java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定
- 图文解释XCode常用快捷键的使用
- hdu 1358 Period
- poj 3281 Dining (最大流)
- ShutdownHookManager顺序并有优先级的Hook
- 数列排序
- ubuntu下如何查看用户登录及系统授权相关信息
- Flex SuperTabNavigator中SuperTab关闭按钮样式修改
- Objective-C 学习笔记 4 数据类型和表达式
- js实现带有介绍的Select列表菜单实例
- Ubuntu搭建FTP服务器