首页 > 试题广场 >

表示数字

[编程题]表示数字
  • 热度指数:180255 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的由字母和数字混合构成的字符串 s,找到全部的连续数字子串,并在每一个子串的前后添加星号(\texttt{*});其余字符保持不变。

\hspace{15pt}子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。

输入描述:
\hspace{15pt}在一行上输入一个长度为 1 \leqq {\rm len}(s) \leqq 100、由大小写字母和数字混合构成的字符串 s


输出描述:
\hspace{15pt}在一行上输出处理后的字符串 s
示例1

输入

Jkdi234klowe90a3

输出

Jkdi*234*klowe*90*a*3*
头像 honghecun
发表于 2020-05-29 16:49:00
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanne 展开全文
头像 牛客940206908号
发表于 2021-10-07 13:18:31
一次性免调试通过,思路见注释 while True: try: s = input() s_o = '' char_pre = '' for i in s: #遍历字符串 if i.isdigit() : 展开全文
头像 寒武子星
发表于 2021-12-04 13:43:08
自己写的,最开始想遍历把每个数字前后都加上*,再删除**的,剩余的就应该满足条件了,但是发现给的字符串中也可能出现*,所以先把原始字符串中的*替换成了一般字符串中不会有的中文,再按上述方法计算,最后再把中文替换回 * while True: try: s = input() 展开全文
头像 君君橙
发表于 2021-03-29 19:33:57
我这前后加个字符,就很妙 :) while True: try: res, n, s = '', '0123456789', ' ' + input() + ' ' for i in range(len(s) - 1): res += 展开全文
头像 可导必连续^-^
发表于 2022-02-16 22:49:44
在每个数字的两边加上,在最后将‘$$’消去(出现‘$$’只有两个连续数字中间),最后将‘&’替换为 '*' (用避免了1**3这类的情况) while True: try: a = list(input()) b = [] for i 展开全文
头像 henryboy233
发表于 2021-09-20 20:52:16
运用正则表达式 import re while True: try: print(re.sub('(\d+)', '*\g<1>*', input())) except: break
头像 KrazyPhish
发表于 2021-11-05 16:02:49
let str; while(str = readline()){   str = str.replace(/[0-9]+/g, (val) => '*' + val&nbs 展开全文
头像 你敲代码的样子好像蔡徐坤
发表于 2021-10-05 11:19:26
本题灵感来自于讨论区的一位大佬,看他是用Java做的这道题,使用了replaceAll通过正则表达式匹配替换的方式实现的,然后我想既然是正则表达式,那么C++也有正则表达式,我们也来写一个用C++正则表达式实现匹配替换的程序 #include<bits/stdc++.h> using n 展开全文
头像 摸鱼学大师
发表于 2021-11-03 21:29:24
题目的主要信息: 将一个字符中所有的整数前后加上符号“*”,其他字符保持不变 连续的数字视为一个整数 方法一:遍历添加 具体做法: 我们可以遍历字符串,每次遇到一个数字字符就在前面添加一个星号,然后使用循环连续遍历这个子串的所有数字字符,直到遇到第一个不是数字字符的,在其前面添加另一个星号即可。 展开全文
头像 派仔
发表于 2020-08-11 10:27:50
StringBuilder 轻松解决 import java.util.*; public class Main { public Main() { } public String markNum(String pInStr) { StringBui 展开全文