题解 | #表示数字#

表示数字

http://www.nowcoder.com/practice/637062df51674de8ba464e792d1a0ac6

自己写的,最开始想遍历把每个数字前后都加上*,再删除**的,剩余的就应该满足条件了,但是发现给的字符串中也可能出现*,所以先把原始字符串中的*替换成了一般字符串中不会有的中文,再按上述方法计算,最后再把中文替换回 *

while True:
    try:
        s = input()
        sn = ''
        s = s.replace('*', '牛')
        for i in s:
            if i.isdigit():
                sn += '*' + i + '*'
            else:
                sn += i
        sn = sn.replace('**', '')
        print(sn.replace('牛', '*'))
    except:
        break

再记录下看到的re方法,方法很简单

import re
while True:
    try:
        print(re.sub('(\d+)', '*\g<1>*', input()))
    except:
        break
全部评论
那其实可以先在数字前后加上“牛”,最后删除“牛牛”再把“牛”替换成“*”
1 回复 分享
发布于 2023-12-18 15:24 浙江
大佬,第二种方法中'(\d+)', '*\g<1>*' 什么意思,多次匹配数字,后半段看不懂,求解释
点赞 回复 分享
发布于 2022-01-20 17:57
万一,字符串里面本身就有‘牛’这个字符串呢?怎么办呢
点赞 回复 分享
发布于 2022-03-30 15:07
很好理解
点赞 回复 分享
发布于 2022-04-16 20:37
通用的方法很好理解,借鉴了
点赞 回复 分享
发布于 2022-06-02 14:18
tr循环体中不应该加个break么 不然不是无限循环么
点赞 回复 分享
发布于 2023-01-11 11:28 北京
re方法太牛了,就是不太懂,能详细解释下么?
点赞 回复 分享
发布于 2023-01-12 17:23 北京

相关推荐

预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
63 6 评论
分享
牛客网
牛客企业服务