面試題
假設有一個字符串,每個英文單詞全部都是以首字母大寫,之后有小寫字母,現需要逐個反轉每個單詞。
舉例:
輸入:"MyNameIsTom"
輸出:"yMemaNsImoT"
解決方案及代碼:
方法:1:
思路把英文單詞切割出來,切割的思路根據前面一個單詞小寫,后面一個單詞大寫,於是可以拆分單詞;
首先,判斷字母是大寫時,將前一個字符串追加的列表的末尾;
其次,前一個字符串在拼接的時候,將小寫字母往前加;
再次,無論原字符串最后一個字母是大寫還是小寫,都需要追加的列表;
最后,拼接成最終的字符串;
代碼:
a = "MyNameIsTom"
l=[]
s=""
zs=""
for i in range(len(a)):
if a[i].isupper():
if len(s)!=0:
l.append(s)
s=a[i]
else:
s=a[i]+s
l.append(s)
zs="".join(l)
# for i in l:
# zs+=i
print(l)
print(zs)
運行結果:
['yM', 'emaN', 'sI', 'moT'] yMemaNsImoT
方法2:
找到每個含大寫字母的單詞后,反轉並拼接成最終的字符串;
代碼:
a = "MyNameIsTom" s = "" zs="" for i in range(len(a)): if a[i].islower(): s=a[i]+s #yM else: zs+=s #空,yM s=a[i] #M,N if i==len(a)-1: zs+=s print(zs)
運行結果:
yMemaNsImoT
方法3:
通過正則表達式,模糊匹配,找出大寫字母;
代碼:
import re a = "MyNameIsTom" zs="" dc=re.findall("[A-Z]{1}[a-z]+",a) print(dc) for i in dc: zs+=i[::-1] print(zs)
運行結果:
['My', 'Name', 'Is', 'Tom'] yMemaNsImoT