C演算法 雙指標匹配單詞

2021-10-04 05:56:19 字數 1756 閱讀 5626

leetcode1062題,最長重複子串。比如aabcaabdaab,輸出最長的重複過的aab

leetcode758題,字串中的加粗單詞。比如 words = [「ab」, 「bc」] 和 s = 「aabcd」,需要返回 「aabcd」。

leetcode3題,無重複字元的最長字串。比如pwwkew,最長無重複字元是wke

已經出現n次的題目了,套路總結下

1、定義starta、startb、curr,通過curr控制移動,匹配starta+curr與startb+curr的大小

2、一旦找到乙個ok的以後,start僅僅進行+1移動,否則start會丟失部分資訊

3、鑑於758題,插個話,字首和一定要考慮第乙個元素的感受

3如下:

int

lengthoflongestsubstring

(char

* s)

} ret = i - start +

1> ret ? i - start +

1: ret;

if(flag ==1)

else

}return ret;

}

758如下:

#include

#define maxlen 502

#define tmpmax 1500

char

*boldwords

(char

** words,

int wordssize,

char

* s)

;int minus[maxlen]=;

char rettmp[tmpmax]

; rettmp[0]

='\0'

; slen =

strlen

(s);

for(i =

0; i < wordssize; i++

)else

if(wstart + curr != wlen)

for(j = sstart; j < sstart + curr; j++

) sstart++

; curr =0;

}}for(i =

0; i < slen +

1;i++

)for

(i =

0;i < slen +

1;i++

)else

if(minus[i]==-

1)if(i == slen +1)

rettmp[retlen++

]= s[i]

; rettmp[retlen]

='\0';}

rettmp[retlen]

='\0'

;char

* ret =

(char*)

malloc

(retlen +1)

;memcpy

(ret, rettmp, retlen +1)

;return ret;

}

1062如下

int

longestrepeatingsubstring

(char

* s)

end ++;if

(end == slen)

if(max > slen - start)

}return max;

}

C 演算法 萬用字元匹配 雙指標

leetcode相關c 演算法解答 給定乙個字串 s 和乙個字元模式 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 輸入 s...

單詞匹配演算法

題目 有乙個江洋大盜,他每次寫信都是從一張報紙上剪下單詞,再把單詞貼在信上。假如某張報紙的單詞儲存在vector 中,而信的單詞儲存在vectorletter 中,寫乙個演算法程式判別該報紙可不可以生成該信?對比一些方法 這裡假設 m個單詞,每個單詞平均d個字母 letter n個單詞,每個單詞平均...

雙指標 雙索引 演算法介紹 c

雙指標演算法在一些陣列題中很常用,它指的是一類使用兩個指標遍歷陣列求解問題的方法,這裡的指標是廣義上的,有可能是c c 中的指標,也有可能僅僅是兩個整數下標。雙指標演算法有兩種形式,一種被稱為對撞指標,兩個指標從兩端向中間靠攏 另一種是快慢指標,兩個指標向統一方向運動,滑動視窗方法就是一種常用的快慢...