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

2022-03-08  本文已影响0人  码同学软件测试

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

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

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

码同学公众号:自动化软件测试

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


01   算法题一

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

举例

输入:"MyNameIsTom"

输出:"yMemaNsImoT"

解题思路:

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

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

如下是解决方法

第一种解决方法:

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

免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦

第二种解决方法:

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

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

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以关注我们公众号哦:自动化软件测试

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

上一篇下一篇

猜你喜欢

热点阅读