反轉字串
和反轉陣列一樣,尾部與頭部交換
字串中的第乙個唯一字元
第乙個不重複的字元,不重複用雜湊表來判斷
實現 strstr()
判斷某字串是否含有子字串
思路一:暴力法,先匹配第乙個字元,不一樣的話往後移,如果一樣就內部匹配,匹配不成功就回溯,時間最壞o(n(n-l)),空間o(1)
思路二:kmp演算法 時間o(n+l),回溯不太好,利用部分匹配表
class
solution
:def
strstr
(self, haystack:
str, needle:
str)
->
int:
next
= self.getnext(needle)
i =0 j =
0while i <
len(haystack)
and j <
len(needle)
:if j ==-1
or haystack[i]
== needle[j]
: i +=
1 j +=
1else
: j =
next
[j]if j ==
len(needle)
:return i - j
return-1
defgetnext
(self,s)
:next=(
len(s)+1
)*[0
]next[0
]=-1
i =0 j =-1
while i <
len(s)
:if j ==-1
or s[i]
== s[j]
: i +=
1 j +=
1next
[i]= j
else
: j =
next
[j]return
next
外觀數列
規律尋找
class
solution
:def
countandsay
(self, n:
int)
->
str:
list_p =[[
'1'],[
]]count =
0 flag =
1for i in
range(0
,n-1):
flag = i %
2for j in
range
(len
(list_p[flag]))
:if j ==0:
count +=
1elif
int(list_p[flag]
[j])
==int
(list_p[flag]
[j-1])
: count +=
1else
: list_p[
1-flag]
str(count)
) list_p[
1-flag]
[j-1])
count =
1 list_p[
1-flag]
str(count)
) list_p[
1-flag]
[j])
count =
0 list_p[flag]
.clear(
)return
''.join(list_p[
1-flag]
)
最長公共字首 字串查詢 1 暴力字串查詢演算法
virtual int findstr const string haystack,const string needle override if j patsize return i return 1 最差情況下,haystack可能是 aaa.aaa needle是 a.ab 在這種情況下,需要...
字串簡單加密演算法
題目描述 輸入乙個字串,其中字串小寫字母a 到 z 組成。請將此字串進行加密 1 將字串前半部分每個字元減 1,後半部分每個字元加 1。比如d減 1變為c。2 如果字串長度為奇數,中間字元不作處理。3 字元為a z時做迴圈處理。比如,字元為a,減 1為z 字元為z,加 1為a。eg bewuz 處理...
《演算法》 字串 字串排序
輸入字串和字串對應的組別 組別也是字串的鍵 在滿足組別有小到大排序的情況下,將字串按字母順序排序 第一步,記錄組別的頻率 為了得到某個字串在排序後的範圍,比如組別2肯定在組別1後面,在組別3前面,把每個組別有多少個人記錄下來,方便我們定位 第三步,分類 該組別的位置起點 向後挪一位 因為當前位被用了...