五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

力扣:28. 找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)

2023-04-14 20:04 作者:薄荷硬糖醬  | 我要投稿

28. 找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)

難度中等1835

給你兩個(gè)字符串?haystack?和?needle?,請(qǐng)你在?haystack?字符串中找出?needle?字符串的第一個(gè)匹配項(xiàng)的下標(biāo)(下標(biāo)從 0 開始)。如果?needle?不是?haystack?的一部分,則返回??-1?。

?

示例 1:

輸入:haystack = "sadbutsad", needle = "sad"輸出:0解釋:"sad" 在下標(biāo) 0 和 6 處匹配。 第一個(gè)匹配項(xiàng)的下標(biāo)是 0 ,所以返回 0 。

示例 2:

輸入:haystack = "leetcode", needle = "leeto"輸出:-1解釋:"leeto" 沒有在 "leetcode" 中出現(xiàn),所以返回 -1 。

?

提示:

  • 1 <= haystack.length, needle.length <= 104

  • haystack?和?needle?僅由小寫英文字符組成

第一種對(duì)法:

暴力,時(shí)間復(fù)雜度O(n*m),空間復(fù)雜度O(1)

第二種對(duì)法:

kmp算法,時(shí)間復(fù)雜度O(n+m),空間復(fù)雜度O(m)

思路:kmp算法最重要的部分就是next數(shù)組,如何得到next數(shù)組。

i:表示后綴末尾,j:表示前綴末尾

第一步:初始化

將j設(shè)置為0,將next[0]=0;

第二步:當(dāng)條件是前后綴不相同時(shí)

while(int j=1;j<s.size();j++){

? ? j = next[j-1];

}

第三步:當(dāng)條件是前后綴相同時(shí)

if(s[i]==s[j])j++;

第四步:更新next數(shù)組

next[i]=j;

代碼如下:

class?Solution?{

public:

????void?getNext(int?*next,const?string&?s){

????????int?j?=?0;

????????next[0]?=?0;

????????for(int?i?=?1;i<s.size();i++){

????????????while(j>0?&&?s[i]!=s[j]){

????????????????j?=?next[j-1];

????????????}

????????????if(s[i]==s[j])j++;

????????????next[i]?=?j;

????????}

????}

????int?strStr(string?haystack,?string?needle)?{

????????if(needle.size()==0)return?0;

????????int?next[needle.size()];

????????getNext(next,needle);

????????int?j?=?0;

????????for(int?i?=?0;i<haystack.size();i++){

????????????while(j>0?&&?haystack[i]?!=?needle[j]){

????????????????j?=?next[j-1];

????????????}

????????????if(haystack[i]==needle[j]){

????????????????j++;

????????????}

????????????if(j==needle.size())return?(i?-?needle.size()?+?1);

????????}

????????return?-1;

????}

};


力扣:28. 找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南宁市| 慈溪市| 栾川县| 靖州| 新乐市| 桂平市| 饶平县| 沅江市| 福贡县| 台江县| 湖南省| 麻栗坡县| 富裕县| 易门县| 新田县| 汤阴县| 台州市| 西藏| 宁夏| 黑龙江省| 新化县| 陈巴尔虎旗| 五华县| 东至县| 米脂县| 青田县| 怀化市| 双峰县| 贺兰县| 荆州市| 平遥县| 泸溪县| 眉山市| 宁波市| 平陆县| 扶绥县| 应用必备| 珠海市| 新乡市| 吉安市| 旌德县|