• 面试题-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)
    
  • 相关阅读:
    iperf3命令使用
    python 使用多进程无法正常退出
    cfg 4 ocl
    opencv的CMakeLists.txt与makefile写法
    不需要打密码的sudo方法
    Fedora下rstudio-server安装
    Linux下突然不识别无线网卡
    Python使用opencv
    Python version 2.7 required, which was not found in the registry
    MySQL性能优化 — 实践篇1
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14757986.html
Copyright © 2020-2023  润新知