题目
判断一个字符串是否是另一个字符串的子串
例如,字符串1=abcdefgh
子字符串2=def 是字符串1的子串
子字符串3=df 不是字符串1的子串
解析
用子字符串去比较原字符串分别以每个字母开头的子串
- 如果两个子串的第一个字母相同继续比较后面的
- 否则继续去比较原字符串的下一个字母开头的子串。
代码
public class IsSubString {
public boolean isSubString(String source, String sub){
if (null == sub || null == source){
return false;
}
if (source.length() < sub.length()){
return false;
}
//原字符串从第一个字符开始
for (int i=0; i < source.length(); i++){
//如果第一个字符相同,继续比较子串之后的字符
//否则原字符串从下一个字符开始
if (source.charAt(i) == sub.charAt(0)){
int j = i + 1;
int k = 1;
while (j<source.length()
&& k<sub.length()
&&source.charAt(j) == sub.charAt(k)){
j++;
k++;
}
//找到子字符串在原字符串中相同的子串,返回true
if (k == sub.length()){
return true;
}
}
}
return false;
}
//main方法测试用例
public static void main(String[] args){
String source = "abcdefgh";
String sub = "d";
IsSubString is = new IsSubString();
boolean res = is.isSubString(source, sub);
System.out.println("res = " + res);
}
}
网友评论