實(shí)現(xiàn)strStr()
題目
實(shí)現(xiàn) strStr() 函數(shù)。
給定一個(gè) haystack 字符串和一個(gè) needle 字符串洁灵,在 haystack 字符串中找出 needle 字符串出現(xiàn)的第一個(gè)位置 (從0開始)。如果不存在弱睦,則返回 -1鸵赖。
示例 1:
輸入: haystack = "hello", needle = "ll"
輸出: 2
示例 2:
輸入: haystack = "aaaaa", needle = "bba"
輸出: -1
說明:
當(dāng) needle 是空字符串時(shí),我們應(yīng)當(dāng)返回什么值呢咱台?這是一個(gè)在面試中很好的問題。
對于本題而言柑爸,當(dāng) needle 是空字符串時(shí)我們應(yīng)當(dāng)返回 0 吵护。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符盒音。
思路
自己的思路,遍歷haystack,如果有相同字符,則從相同字符位置開始與needle相比較,如果符合則返回,如果不符合則繼續(xù)遍歷
代碼
自己的思路
public int strStr(String haystack, String needle) {
if(needle.length() == 0){
return 0;
}
if(haystack.length() == 0){
return -1;
}
char[] chars = haystack.toCharArray();
char[] target = needle.toCharArray();
for(int i = 0;i < chars.length;i++){
if(chars[i] == target[0]){
//如果給定數(shù)組的長度比目標(biāo)數(shù)組的長度都要大的話那就沒有比較的必要了.
if(chars.length-i < target.length){
return -1;
}else{
//第一位相同,則繼續(xù)遍歷
for(int j = 0;j < target.length;j++){
//剩下的位數(shù)是否相同
if(chars[i+j] != target[j]){
break;
}else{
if (j == target.length -1){
return i;
}
}
}
}
}
}
return -1;
}