概述
今天面试了一个腾讯微信后台,说了几句就说弄一个题做一下,结果一脸懵逼,给定字符串,去除其中的驼峰字符串(例如:将“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的增加做到了对每个驼峰串的识别
最后
以上就是活泼悟空为你收集整理的【腾讯微信后端实习面试题】去除驼峰字符串的全部内容,希望文章能够帮你解决【腾讯微信后端实习面试题】去除驼峰字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复