描述
将一个字符中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。
数据范围:字符串长度满足
输入描述:
输入一个字符串
输出描述:
字符中所有出现的数字前后加上符号“*”,其他字符保持不变
示例1
输入:
Jkdi234klowe90a3
输出:
Jkdi*234*klowe*90*a*3*
解题思路:
- 首先假设字符串中本身也可能会含有
字符,将自带的*
字符全部替换为别的任意字符。*
- 从左向右遍历整个字符串,如果字符为数字,则在其两侧均添加上
字符。*
- 将
字符替换为*字符**
- 将第一步中的任意字符替换回
字符。*
str1 = input()
str1 = str1.replace("*", "好")
# 注意类似于list,一定要创建新的string对象
str2 = ""
for i in str1:
if i.isdigit():
str2 += "*" + i + "*"
else:
str2 += i
str2 = str2.replace("**", "")
str2 = str2.replace("好", "*")
print(str2)
当然,对于
Python
中的字符串问题,最简单的方法还是应该使用正则表达式。
方法一:
import re
print(re.sub('(\d+)', '*\g<0>*', input()))
当
repl
写为
'*\g<0>*'
时,前面的部分可以不用加小括号,这里的
repl
部分也可以写为
'*\g<1>*'
。即如下代码也可以运行。
import re
print(re.sub('(\d+)', '*\g<1>*', input()))
方法二:
import re
print(re.sub('\d+', '*\g<0>*', input()))
import re
print(re.sub('[0-9]+', '*\g<0>*', input()))