题目:
1 字符串区分字符和数字(连续的字符或数字当做一个整数) 2 例如: 3 "a11hh1soiu666" 4 拆分结果: 5 a 11 hh 1 soiu 666 6 7 "a3bbb4315j43" 8 拆分结果: 9 a 3 bbb 4315 j 43
思路:
1 使用 str.isdigit() 判断是否是数字, 2 3 如果是,继续判断上一个是否为数字, 4 5 是则将该数字和之前的组合 6 7 不是key为之前的字符,value是该数字
代码如下:
1 # @Author :whyCai 2 # @Time :2021/2/17 14:15 3 4 class Solution: 5 def returnStr(self, s) -> str: 6 numDict = {} #最终结果 7 num = 0 #取数值的起始值 8 for i in range(len(s)): 9 #判断是否是数字 10 if s[i].isdigit() : 11 # 如果第一个是数字,默认key 是 '0',value是该数字 12 if i == 0: 13 numDict['0'] = s[i] 14 #判断上一个是否是数字,如果是,将上一个值 + 该数字 15 if s[i-1].isdigit() : 16 numDict[list(numDict)[-1]] = numDict[list(numDict)[-1]] + s[i] 17 # 如果上一个不是数字,key为之前的字符,value是该数字 18 else: 19 numDict[s[num:i]] = s[i] 20 num = i + 1 21 return numDict 22 23 print (Solution().returnStr('a3bbb4315j43'))
结果如下: