天天看點

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()))