天天看点

96---表示数字

描述

将一个字符中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。

数据范围:字符串长度满足

输入描述:

输入一个字符串

输出描述:

字符中所有出现的数字前后加上符号“*”,其他字符保持不变

示例1

输入:

Jkdi234klowe90a3      

输出:

Jkdi*234*klowe*90*a*3*      

解题思路:

  1. 首先假设字符串中本身也可能会含有​

    ​*​

    ​​字符,将自带的​

    ​*​

    ​字符全部替换为别的任意字符。
  2. 从左向右遍历整个字符串,如果字符为数字,则在其两侧均添加上​

    ​*​

    ​字符。
  3. 将​

    ​**​

    ​字符替换为*字符
  4. 将第一步中的任意字符替换回​

    ​*​

    ​字符。
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()))