三道月薪20k的算法题,答案到底有多简单

每天进步一点点,关注我们哦,每天分享测试技术文章

本文章出自【码同学软件测试】

码同学公众号:自动化软件测试,领取资料可加:Matongxue_8

码同学抖音号:小码哥聊软件测试

 

最近很多小伙伴私信小编说想要我们多分享一些算法题,那么今天给大家分享几道算法题,用python代码给大家进行实现,大家在读文章的时候,建议大家先看题,然后思考思路,最后尝试用python代码进行实现,那么话不多说,直接上代码了。

 

01    算法题一

 

面试题:假设有一个字符串,每个英文单词全部都是以首字母大写,之后有小写字母,现需要逐个反转每个单词。

举例

输入:"MyNameIsTom"输出:"yMemaNsImoT"

 

解题思路:

1.单词切割:根据每个单词的首字母单词大写,最后的单词小写这个特性进行切割

2.然后把单个的单词进行反转

 

如下是解决方法

第一种解决方法:

根据首字母是大写的特点对单词进行切割,然后放到列表中保存,对列表进行循环遍历,把单个单词拿出来,然后进行反转,之后用join方法把列表转换成字符串。

 

第二种解决方法:

利用正则表达式把单独的单词进行切割,然后放到一个列表中,对列表进行循环遍历,把单个单词拿出来,然后进行反转,之后用join方法把列表转换成字符串。

 

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可加:Matongxue_8/关注码同学公众号

 

02    算法题二

 

三个一组进行反转,最后剩1个,不反转,剩2个,互换

举例子:

[1,2,3,4] -> [3,2,1,4]

[1,2,3,4,5] -> [3,2,1,5,4]

[1,2,3,4,5,6] -> [3,2,1,6,5,4]

 

解题思路:

1.3个一组,就可以用到步长进行切割,返回值是一个列表 2,反转就用列表的reverse方法

 

代码如下:

 

03    算法题三

 

100个人围一圈编号1-100,依次开始报数,

从1开始,报到3的退出,然后继续从1开始,报到3退出,直到最后只有2个人,得到编号 58, 91

从1开始,报到4的退出,然后继续从1开始,报到4退出,直到最后只有3个人,得到编号 34, 45, 97

 

实现效果:

输入:3输出:58,91输入:4输出:34, 45, 97

 

解题思路:

先把1-100编号,如果长度大于3就可以正常报数,用切片的方式把报数的数据从列表中删除,然后再重新组合,进行重新的报数,之后再把报数的数据从列表中删除,然后在重新组合,依次重复,直到a的长度小于3停止,退出循环,然后对列表进行排序,把最终的结果返回出来。

 

代码如下:

那上面的三道题就是今天给大家分享的比较典型的算法题了,大家赶紧收藏,有时间的时候钻研一下,都是比较典型的题哟,那祝大家都可以高薪就业,找到如意的工作,加油。

 

END

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可加:Matongxue_8/关注码同学公众号

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 

posted @ 2022-03-08 09:33  码同学软件测试  阅读(79)  评论(0编辑  收藏  举报