python3 面試題 英文單詞全部都是以首字母大寫,逐個反轉每個單詞


面試題

假設有一個字符串,每個英文單詞全部都是以首字母大寫,之后有小寫字母,現需要逐個反轉每個單詞。

舉例:

輸入:"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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM