【題目】
給定乙個字串str,返回str的統計字串。例如,「aaabbadddffc」的統計字串為「a_3_b_2_1_d_3_f_2_c_1」。
【補充題目】
給定乙個字串的統計字串cstr,再給定乙個整數index,返回cstr所代表的原始字串上第index個字元。例如,」a_1_b_100」所代表的原始字串上第0個字元是『a』,第50個字元是『b』。
【基本思路】
原問題。從左到右遍歷str,如果發現當前字元不等於前乙個字元,就將之前的字元和頻數新增到新的字串。詳情參照如下**。
補充題目。
使用posi用來判斷當前字元是字母字元還是數字字元,true表示字母字元,false表示數字字元。初始時令posi = true。從左到右遍歷字串,如果遇到『_』,就反轉posi。
每當遇到下乙個字母,就將之前的字母以及頻數加到新字串。
注意處理字串的結尾。
詳情見如下**
下面是使用python3.5實現的**
#字串的統計字串
#原問題
defgetcountstring
(str1):
if str1 == none
or str1 == '':
return
'' res = str1[0]
num = 1
for i in range(1, len(str1)):
if str1[i] == str1[i-1]:
num += 1
else:
res = res + '_' + str(num) + '_' + str1[i]
num = 1
return res + '_' + str(num)
#補充題目
defgetcharat
(str1, index):
if str1 == none
or str1 == ''
or index < 0:
return
'' posi = true
cur = ''
num = 0
sum = 0
for i in range(len(str1)):
if str1[i] == '_':
posi = not posi
elif posi:
sum += num
if sum > index:
return cur
cur = str1[i]
num = 0
else:
num = num * 10 +int(str1[i])
return cur if sum+num > index else
''
字串的統計字串
給定乙個字串,統計每乙個字母的出現次數 比如aabbccc,列印出來就是a 2 b 2 c 3 思路還是採取遍歷,注意這幾個題的思路都比較類似 要注意這裡的sstream 這裡的clear 並非清空了緩衝區,而只是重置標誌,如果要重置緩衝區,則應為ss.str include include usi...
字串的統計字串
題目 給定乙個字串str,返回str的統計字串。例如,aaabbadddffc 的統計字串為 a 3 b 2 1 d 3 f 2 c 1 補充題目 給定乙個字串的統計字串cstr,再給定乙個整數index,返回cstr所代表的原始字串上第index個字元。例如,a 1 b 100 所代表的原始字串上...
模板題 字串統計
維護乙個字串集合,支援兩種操作 字元僅包含小寫字母 1 leq n leq 2 times 10 1 leq s leq 10 利用字典樹統計字串數目模板題,在字典樹中,每條邊表示的是字串中的字元,在每個字串的終止節點來計算數目 includeusing namespace std define r...