leetcode 151. 反转字符串中的单词

2023.6.14

leetcode 151. 反转字符串中的单词_第1张图片

         这道题全面考察了字符串的一些操作,这里我的思路是:

  1. 先对字符串进行空格去除操作,这里要注意一个细节:先用for循环去除连续空格,再用if判断开头和结尾的空格。
  2. 再对没有异常空格的s 做一个反转操作。
  3. 再对每一个单词进行反转。

接下来先复习一下string的基本操作:

  • erase:可以用来删除指定位置的字符,iterator erase (iterator p) ;这里要注意返回值是之前迭代器位置的下一个迭代器的位置,在代码中去除连续空格阶段,注意要将索引k - -             erase还可以用来删除指定返回的字符串,iterator erase (iterator first, iterator last);   这里要注意区间是左闭右开的,同样的道理reverse() 操作的区间也是左闭右开的,所以代码的最后reverse的时候 reverse(s.begin()+i , s.begin()+j+1); 需要+j+1  。   

        上面的操作是我犯的两个错误,都是基础不扎实造成的,下面上我写的代码:

class Solution {
public:
    string reverseWords(string s) 
    {
        // 1、移除连续的空格
        for(int k=0; k

        很全面的题,缝缝补补改了很久,移除空格的erase操作还可以优化(erase本身就有o(n)的时间复杂度),有机会再来二刷。

你可能感兴趣的:(leetcode专栏,leetcode,c++,算法,数据结构)