python 练习题-字符串区分字符和数字(连续的字符或数字当做一个整数)

题目:

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'))

结果如下:

原文地址:https://www.cnblogs.com/whycai/p/14411674.html