算法训练营第十七天 | 151.反转字符串中的单词
一、题目第十七天 151.翻转字符串里的单词建议这道题目基本把做过的字符串操作都覆盖了不过就算知道解题思路本题代码并不容易写要多练一练。题目链接https://leetcode.cn/problems/reverse-words-in-a-string/视频讲解https://www.bilibili.com/video/BV1uT41177fX二、看到题目的第一想法刚看到这道题我脑子里第一个想法就是“这不就是把句子里的单词顺序反过来吗”一开始我想是不是直接把整个字符串反转一下再把每个单词单独反转就能解决但又想到题目里还有很多细节比如前后的空格、单词中间多个空格的问题一下子有点懵。再仔细看示例发现核心是先把单词按空格分开再倒着拼回去还要把多余的空格删掉。三、实现过程中遇到的困难1. 处理空格的问题最头疼的就是空格。比如字符串前后有空格、单词中间有多个空格直接用split分割的话很容易把空字符串也当成单词处理起来很麻烦。2. C中字符串处理不熟我一开始想直接用C的stringstream来分割单词虽然简单但感觉有点“偷懒”而且也想练一练手动处理的方式所以又改回了手动遍历字符串的方法。3. 边界条件考虑不全比如输入全是空格的情况不过题目里说了保证至少有一个单词所以这个不用考虑但像单个单词、多个连续空格这些情况还是踩了几个小坑。四、代码实现五、今日收获心得1. 学会了两种处理这道题的思路一种是直接分割单词再反转拼接另一种是“整体反转局部单词反转”的原地解法。2. 对字符串中“空格”的处理更有经验了知道了怎么手动遍历、跳过多余空格提取出有效的单词。3. 明白了做算法题不能只想着“功能实现”还要考虑题目里的细节和边界条件不然很容易卡在测试用例上。