557.翻转字符串中的单词 III

题目:翻转字符串中的单词 III

  给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例:

     输入:"Let's take LeetCode contest"

  输出:"s'teL ekat edoCteeL tsetnoc"

题目解析:

  1. 本题目中与直接翻转不同的是:以空格为分界符,对每个单词进行单独的顺序反转;
  2. 需要注意的是,在string类型中,判断其中的字符是否为空格,不能采用s[i]==" "的形式,要使用ctype.h中的isspace(s[i])来进行判断;
  3. 同时,C++中判断string类型的字符串是否结束,并不是使用'\0'的形式(字符串数组是),我们采用判断当前i是否等于字符串长度来判断结束。

代码:

#include <iostream>
#include<algorithm>
#include<string.h>
#include<ctype.h>
using namespace std;
class Solution{
public:
    string reverseWords(string s){
        int i=-1; //当前坐标
        int begin_s=0; //字符串中单词的开始坐标
         while(i!=s.size())
            {++i;
            if(isspace(s[i])||i==s.size())
            {
                reverse(s.begin()+begin_s,s.begin()+i); //begin_s与i-1之间为整个单词
                begin_s=i+1;
            }

            }
        return s;
    }

};
int main()
{
Solution f;
cout << f.reverseWords("abc efg") << endl;
return 0;
}

结果截图:

  原字符串:"abc efg"

      557.翻转字符串中的单词 III

 

题目链接:
https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/

 

上一篇:CF1034E Little C Loves 3 III


下一篇:十大排序算法整理(含JavaScript版本与Python版本源码)