LeetCode: 实现 strStr() (28)

it2025-02-27  23

LeetCode: 实现 strStr() (28)

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

示例 1:

输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2:

输入: haystack = “aaaaa”, needle = “bba” 输出: -1

代码:

class Solution { public int strStr(String haystack, String needle) { /** 直接法,将needle作为整体比较 **/ // if(needle.equals("")) return 0; // int nl = needle.length(); // int hl = haystack.length(); // int index = 0; // while (index <= hl-nl){ // if(!haystack.substring(index,index+nl).equals(needle)){ // index++; // }else{ // break; // } // } // return index<=hl-nl ? index:-1; /** 双指针法 遍历两个字符串,逐一比较字符。**/ if(needle.equals("")) return 0; int nl = needle.length(); int hl = haystack.length(); int n = 0,h = 0; while(h<hl){ if(needle.charAt(n) == haystack.charAt(h)){ n++; h++; }else{ h = h - n +1;//当两个字符不同时,前面的比较都得从头再来。needle字符串从头开始,而haystack需要从下一个字符开始 n = 0; } if( n == nl ){ break; } } return n<nl? -1:h-n; } }
最新回复(0)