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


面試題

面試題:假設有一個字符串,每個英文單詞全部都是以首字母大寫,之后有小寫字母,現需要逐個反轉每個單詞。
舉例
輸入:"MyNameIsTom"
輸出:"yMemaNsImoT"

解決代碼

首先第一步把英文單詞切割出來,切割的思路根據前面一個單詞小寫,后面一個單詞大寫,於是就可以拆分單詞。
單詞拆分了接下來對單詞反轉就可以了, 整個思路用棧的思維來解決,簡單畫了下圖

解決代碼

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

a = "MyNameIsTom"
aa = []
s = ""
for i in a:
    if i.isupper():
        # 如果是大寫
        if len(s) == 0:
            s += i
        else:
            aa.append(s)
            s = ''
            s += i

    else:
        s += i
if len(s) > 0:
    aa.append(s)

print(aa)  # 得到列表['My', 'Name', 'Is', 'Tom']

# 對列表單詞反轉並大小寫反轉
result = []
for j in aa:
    reverse_j = j[::-1]
    result.append(reverse_j)
print("".join(result)) # yMemaNsImoT

正則匹配

第二種解決思路可以用正則表達式解決

import re

str1 = "MyNameIsTom"
str_list = re.findall("([A-Z]{1}[a-z]+)", str1)
# print(str_list)  # 正則匹配全部單詞
str2 = ''.join(i[::-1] for i in str_list)
print(str2)


免責聲明!

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



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