题解 | #表示数字#
表示数字
https://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6
# s = input()
# num = len(s)
# for i in s:
# if i.isdigit():
# s = s.replace(i, f"*{i}*") # 不能直接替换原来的字符串,因为里面有相同的元素,涉及替换了多次存在多个星号的问题。
# print(s)
# 给一个空字符串,如果是字母就添加进去,如果是数字就添加 *,
s = input()
s = s.replace("*", "牛")
sn = ""
for i in s:
if i.isdigit():
sn += f"*{i}*"
else:
sn += i
sn = sn.replace("**", "") # 用 空字符串 替换掉 ** 字符串
sn = sn.replace("牛", "*")
print(sn)
首先想到的是在原有基础上直接替换生成副本字符串,但是后来debug后发现:如果有2个3的话,我就会替换了2次,有多个星号。多个星号不好处理
所以,直接看了题解。思路:
替换掉原字符串的 * 号为 ”牛“,
往空字符串中新增字符,如果数字就 *数字*,如果不是数字,直接添加,
替换掉 ** 为空字符串。
把牛牛替换回 *即可。
#数据仓库与数据分析实习#OD专栏练习梳理 文章被收录于专栏
OD专栏练习梳理

查看13道真题和解析