美团318笔试第三题回文串
想问问大家我这个思路有问题吗?
首先遍历一遍字符串,记录下不匹配的位置有几对(如果字符串为奇数长度,也记录下中间落单的那个位置),根据题目要求,这个数量应该为0,1,2。然后分情况讨论。
如果不匹配位置为2对,那么这两对都把较大的改成较小的即可。
如果不匹配位置为1时,有两种情况,第一种是其中有一个为a,另一个不是,此时将另一个不为a的改为a,且如果字符串长度为奇数,那么将中间落单的改为a。第二种是两个都不为a,那么将这两个都改为a即可。
如果不匹配位置为0,说明本身就是回文串。此时再次遍历,找到第一对不为a的位置,将他们都改为a即可。如果每一对都为a,且还剩余修改次数,那么只能改中间落单的为a。
首先遍历一遍字符串,记录下不匹配的位置有几对(如果字符串为奇数长度,也记录下中间落单的那个位置),根据题目要求,这个数量应该为0,1,2。然后分情况讨论。
如果不匹配位置为2对,那么这两对都把较大的改成较小的即可。
如果不匹配位置为1时,有两种情况,第一种是其中有一个为a,另一个不是,此时将另一个不为a的改为a,且如果字符串长度为奇数,那么将中间落单的改为a。第二种是两个都不为a,那么将这两个都改为a即可。
如果不匹配位置为0,说明本身就是回文串。此时再次遍历,找到第一对不为a的位置,将他们都改为a即可。如果每一对都为a,且还剩余修改次数,那么只能改中间落单的为a。
全部评论
我觉得思路没什么问题,但是只过了27%。
我也是这么做的
相关推荐
08-11 18:47
哈尔滨信息工程学院 Java 点赞 评论 收藏
分享
08-14 17:55
上海理工大学 机械结构工程师 在吵架的熊熊很甜美:我昨晚面阿里巴巴某事业群的时候一模一样。他揪着问很细很细的点,我只能按照自己的想法回答,他一点点反馈都没有,我不知道说的对不对,越说越心虚,我说不下去之后,他居然在那笑…好讨厌这样的面试…
点赞 评论 收藏
分享