华为机试——表示数字

题目描述

将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变
 public static String MarkNum(String pInStr)
 {
     
  return null;
 }

输入描述:

 
  

输入一个字符串

输出描述:

 
  

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

示例1

输入


Jkdi234klowe90a3

输出


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

思路:前后如果分别是数字和字母就需要添加*,需要考虑的三种特殊情况是:1.第一个是数字,最后一个是字母;2.第一个是字母,最后一个是数字;3.第一个和最后一个都是数字。

def func(str1):
    loc = []
    res = ""
    if(len(str1)==1):
        if(str1[0]<='9' and str1[0]>='0'):
            return '*'+str1+'*'
        else:
            return str1
    else:
        for i in range(len(str1)-1):
            pre = str1[i]
            aft = str1[i+1]
            if((pre>'9' and (aft<='9' and aft>='0')) or (aft>'9' and (pre<='9' and pre>='0'))):
                loc.append(i)
        for i in range(len(str1)):
            if(i in loc):
                res = res +  str1[i] + "*"
            else:
                res = res + str1[i]
        if(len(loc)%2!=0):
            if(res[0] > '9'):
                res = res + '*'
            else:
                res = '*' + res
        if(res[0]>='0' and res[0]<='9' and res[len(res)-1]>='0' and res[len(res)-1]<='9'):
            res = '*' + res + '*'
    return res
while True:
    try:
        str1 = input()
        print(func(str1))
    except:
        break

猜你喜欢

转载自blog.csdn.net/voidfaceless/article/details/80967323
今日推荐