面試題
面試題:假設有一個字符串,每個英文單詞全部都是以首字母大寫,之后有小寫字母,現需要逐個反轉每個單詞。
舉例
輸入:"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)