[leetcode]由浅入深的第二十一天

      151.翻转字符串里的单词。给定一个由单词和空格组成的字符串,符号也算在单词里,给出将单词调转顺序,且空格只在单词间出现一次的字符串。看到这道题第一反应就是按顺序读取单词,然后翻转拼接成结果。这样就没啥难度了,于是有了进阶的问题,将空间复杂度控制在O(1)。就是说尽量愿地修改。首先想到的是双指针,两边同时遍历,当都读完一个单词时将单词互换,直到指针相遇为止。单单这个想法本身并没有太大问题,但是在实现上,由于两个单词长度不一致,互换会导致空间不好掌控。于是就有了另一种方法,两次翻转。先将字符串整体翻转,再遍历单词,将单词单独翻转。

      但是要注意的是,由于语言的特性,在Java和Python中字符串是不可变的,所以即使用了后面的方法,本质上还是对字符串进行了拷贝,做不到真正的O(1)空间复杂度Nyah-Nyah

posted @ 2020-10-21 09:47  小小的豪猪窝  阅读(69)  评论(0编辑  收藏  举报