2 mrguanb MrGuanB 于 2015.06.02 15:25 提问

用Java代码实现判断一个字符串中是否包含另一个字符串

用Java代码实现判断一个字符串中是否包含另一个字符串.
注意:但是不能用jdk中String的indexOf方法

7个回答

guwei4037
guwei4037   Ds   Rxr 2015.06.02 15:30

contains 最直接。

danielinbiti
danielinbiti   Ds   Rxr 2015.06.02 15:30
 String s1 = "advadsfasdf";
         String s2 = "vad";
         String s3 = "vmad";
         boolean a = s1.contains(s2);
         System.out.println("a="+a);
         boolean a2 = s1.contains(s3);
         System.out.println("a="+a2);
wenmeishuai
wenmeishuai   2015.06.02 16:03

可以先替换,在判断的方法
吧文本替换成“”,然后判断文本长度,

caozhy
caozhy   Ds   Rxr 2015.06.02 16:33

如果是面试题,估计考官是考察你是否掌握kmp算法。
http://blog.csdn.net/tkd03072010/article/details/6824326
如果你都没听说过,估计这面试就黄啦。

tongyi55555
tongyi55555   2015.06.02 16:45

String base = "adddfdhfd1 2efasar";
String search = "fd1 2";
if("".equals(base) || "".equals(search)){
System.out.println("不支持空字符串查找");
return;
}
char[] baseChar = base.toCharArray();
char[] searchChar = search.toCharArray();
boolean exist = false;
for (int i = 0; i < baseChar.length; i++) {
int j = 1;
if (baseChar[i] == searchChar[0]
&& i + searchChar.length <= baseChar.length) {
for (; j < searchChar.length; j++) {
if (searchChar[j] != baseChar[i + j]) {
break;
}
}
}
if(j == searchChar.length){
exist = true;
break;
}
}
System.out.println("Q:字符串\""+base+"\"包含字符串\""+search+"\"吗?");
System.out.println("A:"+exist);

houoyufeng
houoyufeng   2015.06.02 20:13

这是何苦呢,都用Java String了,还不让用indexof,这不是和自己过不去,难道我还要自己去KMP模式匹配,或者我使用Pattern,或者用String的其他函数代替,别逗了,indexof据测速度比他们都快。

edouardzyc
edouardzyc   2015.06.03 09:10

contains的实现也是用到了indexof 肯定不能用
赞下小黑猫的答案 至少replace用的是Pattern不是String自己的Indexof

Csdn user default icon
上传中...
上传图片
插入图片