问题
给定两个字符串source和target,需在source中找出target出现的第一个位置,不存在则返回-1。
输入:source="hello" target="ll"
输出:2
思路
可以直接利用indexOf但是没有意义。 通过遍历,不断在source中截取字符串与target进行比较。
实现
class Solution {
public int strStr(String source, String target) {
int length = target.length();
for(int index=0;index<source.length()-1;++index){
if(source.substring(index,index+length).equals(target)){
return index;
}
}
return -1;
}
}
但是这么实现运行会报错,会出现角标越界,问题点就在substring上,尾值会出现越界。
所以需要控制循环次数,因为截取时是用index+target长度。所以对于遍历次数应该改为source长度-target长度+1。从而避免越界出现
class Solution {
public int strStr(String source, String target) {
int length = target.length();
for(int index=0;index<source.length()-length+1;++index){
if(source.substring(index,index+length).equals(target)){
return index;
}
}
return -1;
}
}
image.png