题意:两个string,找后一个在前一个出现的索引,如果没出现,返回-1
初步分析:
这个题吧,真是忍不住用string的api,indexOf直接ko,一层循环再加substring也可以解决,如果不用方法的话,应该是要两重循环的。
public class Solution {
public int strStr(String haystack, String needle) {
int len1 = haystack.length();
int len2 = needle.length();
int k = 0;
int t = 0;
if(len1 < len2)
return -1;
if(len1 == 0 || len2 == 0)
return 0;
for(int i=0; i<=(len1 - len2); i++)
{
t = i;
for(int j=0; j<len2; j++)
{
if(haystack.charAt(t) == needle.charAt(j))
{
k++;
t++;
}
}
if(k == len2)
return i;
k = 0;
}
return -1;
}
}
也是理清楚了这么循环里面跳来窜去的各种变量,复杂的逻辑居然过了。。看着不舒服,改了个稍微舒服点的:
public class Solution {
public int strStr(String haystack, String needle) {
int len1 = haystack.length();
int len2 = needle.length();
if(len1 < len2)
return -1;
if(len1 == 0 || len2 == 0)
return 0;
for(int i=0; i<=(len1 - len2); i++)
{
for(int j=0; j<len2; j++)
{
if(haystack.charAt(i+j) != needle.charAt(j))
{
break;
}
if(j == len2-1)
return i;
}
}
return -1;
}
}
不管怎么说,代码是对一个思路,一个逻辑的描述和解释。那么,就是要越直接越好嘛。