每天进步一点点,关注我们哦,每天分享测试技术文章
本文章出自【码同学软件测试】
最近很多小伙伴私信小编说想要我们多分享一些算法题,那么今天给大家分享几道算法题,用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
免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频,可以关注我们公众号哦:自动化软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
网友评论