我是靠谱客的博主 活泼悟空,最近开发中收集的这篇文章主要介绍【腾讯微信后端实习面试题】去除驼峰字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天面试了一个腾讯微信后台,说了几句就说弄一个题做一下,结果一脸懵逼,给定字符串,去除其中的驼峰字符串(例如:将“AaAdfAAaAaA”变成“df”)。
说实话对于驼峰串这个定义就有点模糊,本来当时有点紧张,有时在牛客网上做题,他别是那个面试官看着你做题,我当时脑子真的就是一片空白,这个驼峰串仅仅是两个大写字母中间夹一个小字母吗?能不能是两个小字母夹一个大写字母呢?(毕竟这个aAa也像驼峰)总之面试是gg了,之后网上看了一些解答,自己总结一下。

  • 首先对于第一种情况:驼峰串仅仅是两个大写字母中间夹一个小字母,形如AaA
str = 'AaAdfaAaAaAaAaB'
len = len(str)
print("%s字符串长度:" % str, len)
i = 0
while i < len - 2:
    # 遇到驼峰
    if(str[i] == str[i+2] and str[i] != str[i+1] and str[i].isupper()):
        j = i + 2
        i += 1
    # 如果没有驼峰并且不是之前识别驼峰的最后一个字母就打印
    elif i != j:
        print(i, str[i], end='  ')
    i += 1
    print(i)

if i == len - 2:
    # 对于像'AaAdfAaAaAaAaA'这样的串处理最后两个字符不要打印
    if(str[i+1] == str[i-1] and str[i] != str[i+1] and str[i+1].isupper()):
        pass
    # 对于像"AaAdfAaAaAaAaB"、"AaAdfaAaAaAaAaB"这样的串特殊处理最后两个字符
    else:
        print(i, str[i])
        print(i+1, str[i+1])

调试结果如下:
在这里插入图片描述
在这里插入图片描述

  • 其次对于第二种情况:形如AaA、aAa都可以当成驼峰串
str = 'AaAdfAaAaAaAaA'
len = len(str)
print("字符串长度:", len)
i = 0
while i < len - 2:
    # 遇到驼峰
    if(str[i] == str[i+2] and str[i] != str[i+1]):
        j = i + 2
        i += 1
    # 如果没有驼峰并且不是之前识别驼峰的最后一个字母就打印
    elif i != j:
        print(i,str[i], end='  ')
    i += 1
    print(i)

if i == len - 2:
    # 对于像'AaAdfAaAaAaAaA'这样的串处理最后两个字符不要打印
    if(str[i+1] == str[i-1] and str[i] != str[i+1]):
        pass
    # 对于像"AaAdfaAaAaAaAaB"这样的字符串特殊处理最后一个字符
    elif(str[i] == str[i-2] and str[i] != str[i-1]):
        print(i+1, str[i+1])
    # 对于像'AaAdfAaAaAaAaaa'这样的串特殊处理最后两个字符,另外对于这种情况是不是有点问题
    else:
        print(i, str[i])
        print(i+1, str[i+1])

调试结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:其实这个算法的核心就是while循环部分:其中j的作用很巧妙,配合i的增加做到了对每个驼峰串的识别

最后

以上就是活泼悟空为你收集整理的【腾讯微信后端实习面试题】去除驼峰字符串的全部内容,希望文章能够帮你解决【腾讯微信后端实习面试题】去除驼峰字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部