字串壓縮。利用字元重複出現的次數,編寫一種方法,實現基本的字串壓縮功能。比如,字串aabcccccaaa會變為a2b1c5a3。若「壓縮」後的字串沒有變短,則返回原先的字串。你可以假設字串中只包含大小寫英文本母(a至z)。
示例1:
輸入:「aabcccccaaa」
輸出:「a2b1c5a3」
示例2:
字串長度在[0, 50000]範圍內。
記錄首個字元,使用列表儲存每次拼接的壓縮字元
對當前字元判斷,如果跟之前相同就計數,否則重新記錄字元
將最後乙個字元加入list
class
solution
:def
compressstring
(self, s:
str)
->
str:
iflen
(s)==0:
return s
tmpchar = s[0]
tmpcount =
0 strlen =
0 l =
list()
for item in s:
if item == tmpchar:
tmpcount +=
1else
:'{}{}'
.format
(tmpchar,tmpcount)
) tmpchar = item
tmpcount =
1 strlen +=
len(
str(tmpcount))+
1#最後乙個字元
'{}{}'
.format
(tmpchar,tmpcount)
) strlen +=
len(
str(tmpcount))+
1 result = s
if strlen <
len(s)
: result =
''.join(l)
return result
思路:跟解法一思路類似,做法上通過兩個指標實現,慢指標始終指向字元開始位置,快指標指向相同字元的結束位置。
使用開始索引定位當前字元,一直訪問字串,直到開始位置到達字串結尾
結束索引先到達字串結尾時,由於開頭字元還未到達,因此會進入else模組進行拼接
class
solution
:def
compressstring
(self, s:
str)
->
str:
start, end, slen =0,
0,len(s)
result =
"" tmpcount =
0while start < slen:
if end== s[end]
: tmpcount +=
1 end +=
1else
: result +=
'{}{}'
.format
(s[start]
,tmpcount)
start = end
tmpcount =
0return result if
len(result)
<
len(s)
else s
思路:利用python自身的庫函式itertools.groupby進行字串歸類和統計
使用庫函式獲取字串
使用三元運算返回結果
class
solution
:def
compressstring
(self, s:
str)
->
str:
sresult =
''.join(
[item+
str(
len(
list
(itemstr)))
for item,itemstr in itertools.groupby(s)])
return sresult if
len(sresult)
<
len(s)
else s
字串 字串壓縮
標題 字串壓縮 類別字串處理 時間限制 1s記憶體限制 1000kb 問題描述 有一種簡單的字串壓縮演算法,對於字串中連續出現的同乙個英文本元,用該字元加上連續出現的次數來表示 連續出現次數小於3時不壓縮 例如,字串aaaaabbbabaaaaaaaaaaaaabbbb可壓縮為a5b3aba13b4...
實現 strStr 字串匹配的三種解法
題目描述 實現 strstr 函式。給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 hays...
字串壓縮
include using namespace std 題目描述 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcb...