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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值