字符串的统计字符串
題目:給定一個(gè)字符串str,返回str的統(tǒng)計(jì)字符串。例如,“aaabbadddffc”的統(tǒng)計(jì)字符串為“a_3_b_2_1_d_3_f_2_c_1”。
補(bǔ)充題目:給定一個(gè)字符串的統(tǒng)計(jì)字符串cstr,再給定一個(gè)整數(shù)index,返回cstr所代表的原始字符串上第index個(gè)字符。例如,”a_1_b_100”所代表的原始字符串上第0個(gè)字符是‘a(chǎn)’,第50個(gè)字符是‘b’。
基本思路:原問(wèn)題 從左到右遍歷str,如果發(fā)現(xiàn)當(dāng)前字符不等于前一個(gè)字符,就將之前的字符和頻數(shù)添加到新的字符串
def getCountString(strs):if strs==None or strs=='':return num = 1res = strs[0]for i in range(len(strs)-1):if strs[i]==strs[i+1]:num +=1else:res = res + "_" + str(num) + "_" + strs[i+1]num =1return res + "_" + str(num)getCountString('aaabbadddffc')補(bǔ)充題目。
使用posi用來(lái)判斷當(dāng)前字符是字母字符還是數(shù)字字符,True表示字母字符,False表示數(shù)字字符。
初始時(shí)令posi = True。從左到右遍歷字符串,如果遇到‘_’,就反轉(zhuǎn)posi。
每當(dāng)遇到下一個(gè)字母,就將之前的字母以及頻數(shù)加到新字符串。
注意處理字符串的結(jié)尾。
def getStrsIndex(Strs,Index):if Strs == None or Strs == '' or Index < 0:return ''posi = Truenum = 0sum_ = 0for i in range(0,len(Strs)):if Strs[i]=='_':posi = bool(1-posi)elif posi:sum_ += numif sum_ > index:return curcur = Strs[i]num = 0else:num = num * 10 + int(Strs[i])return cur if sum_ + num > index else ''?
總結(jié)
- 上一篇: 将整型字符串转成整数值
- 下一篇: 判断字符串数组中是否所有字符只出现了一次