描述
将一個字元中所有的整數前後加上符号“*”,其他字元保持不變。連續的數字視為一個整數。
資料範圍:字元串長度滿足
輸入描述:
輸入一個字元串
輸出描述:
字元中所有出現的數字前後加上符号“*”,其他字元保持不變
示例1
輸入:
Jkdi234klowe90a3
輸出:
Jkdi*234*klowe*90*a*3*
解題思路:
- 首先假設字元串中本身也可能會含有
字元,将自帶的*
字元全部替換為别的任意字元。*
- 從左向右周遊整個字元串,如果字元為數字,則在其兩側均添加上
字元。*
- 将
字元替換為*字元**
- 将第一步中的任意字元替換回
字元。*
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()))