反转字符串中的单词(力扣151)

解题思路:首先这题可以用库函数等简便方法来做,但我还是不太熟练,因此这里采用双指针来做并且锻炼思维,在做这题之前可以做做用双指针移除数组中的元素

大体思路:对整个string进行翻转操作,再对每个单词单独反转一次便可得到答案

难点:该字符串中单词与单词之间有空格并且单词之前和之后也有空格,如果直接进行翻转操作会导致空格也被反转过去,所以要进行去空格

去空格做法:运用快慢指针,判断快指针指向的是否为空,然后赋给慢指针的指向位置,但是因为单词与单词之间是有一个空格的,所以用慢指针来给赋值空格,并且因为首单词前面是没有空格的,所以对首单词要特殊判断

翻转注意条件:翻转时候用一个指针遍历string判断它是否为空格与到了尾部,如果是的话就说明一个单词找完,要开始反转了。特别需要注意的是判断条件是fast<=s.size();因为要判断的是是否读完单词,所以要到单词的下一位置

代码实现如下:

class Solution {

public:

   void reverse(string&s,int i,int j)

   {

    for(;i<j;i++,j--)

    {

        swap(s[i],s[j]);

    }

   }

   

   void removeKong(string &s)

    {

        int fast=0;int slow=0;//定义快慢指针

        for(;fast<s.size();++fast)//快指针开始移动

        {

            if(s[fast]!=' ')//但快指针不为空时

        {

            if(slow!=0){s[slow++]=' ';}//判断一下slow是不是指向首单词

            while(fast<s.size()&&s[fast]!=' ')//循环赋值

            {

                s[slow++]=s[fast++];

            }

        }

        }s.resize(slow);

    }

   

   string reverseWords(string &s)

   {

    removeKong(s);int start=0;

    reverse(s,0,s.size()-1);

    for(int i=0;i<=s.size();++i)

    {

        if(s[i]==' '||i==s.size())

        {

            reverse(s,start,i-1);

            start=i+1;

        }

    }

  return s;

   }  

};

相关推荐

  1. -151. 字符串单词

    2024-04-14 22:08:03       67 阅读
  2. 字符串单词151

    2024-04-14 22:08:03       37 阅读
  3. [题解] 151. 字符串单词

    2024-04-14 22:08:03       28 阅读
  4. 每日一题 --- 字符串单词[][Go]

    2024-04-14 22:08:03       41 阅读
  5. 面试经典题---151.字符串单词

    2024-04-14 22:08:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 22:08:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 22:08:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 22:08:03       82 阅读
  4. Python语言-面向对象

    2024-04-14 22:08:03       91 阅读

热门阅读

  1. 【云原生篇】深入理解K8S CNI、CRI 和 CSI

    2024-04-14 22:08:03       36 阅读
  2. 【嵌入式DIY实例】-能耗检测仪

    2024-04-14 22:08:03       31 阅读
  3. P8685 [蓝桥杯 2019 省 A] 外卖店优先级

    2024-04-14 22:08:03       34 阅读
  4. <script setup>组件内的路由守卫

    2024-04-14 22:08:03       36 阅读
  5. C语言入门算法——车站

    2024-04-14 22:08:03       41 阅读
  6. 函数(2)

    2024-04-14 22:08:03       27 阅读