黑马程序员技术交流社区
标题:
求助 这道题怎么解
[打印本页]
作者:
mirror
时间:
2014-7-27 15:57
标题:
求助 这道题怎么解
可以使用String类中的indexOf方法检测一个字符串是否是另一个字符串的子串。编写自己的方法实现这个功能。编写一个程序,提示用户输入两个字符串,检测第一个字符串是否是第二个字符串的子串
作者:
fantacyleo
时间:
2014-7-27 16:57
public class StringIndexOf {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "Hello";
System.out.println(indexOf(s, "ello"));
System.out.println(indexOf(s, "eklo"));
}
public static boolean indexOf(String src, String target) {
if (src == null || target == null)
return false;
int lenSrc = src.length();
int lenTarget = target.length();
if (lenSrc < lenTarget)
return false;
// 从src字符串的第i个字符开始,看是否能匹配target字符串。
// i的范围可以是[0, lenSrc - 1],当然也可以略作优化,要求src从i开始的子串长度不小于target的长度
Outer:
for (int i = 0; lenSrc - i >= lenTarget; i++) {
// 匹配target字符串的首字符后,进入内层循环匹配target字符串的剩余字符
if (src.charAt(i) == target.charAt(0)) {
int j = 1;
while (j < lenTarget) {
// 有一个字符不匹配就重新返回外层循环,从src的第i+1个字符开始尝试匹配
if (src.charAt(i + j) != target.charAt(j))
continue Outer;
j++;
}
// 从src的第i个字符开始完全匹配target,返回true
return true;
}
}
// 从src的每个字符开始都无法匹配target,返回false
return false;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2