【LEETCODE】Reverse Words in a String

来源:互联网 发布:新闻媒体的作用 知乎 编辑:程序博客网 时间:2024/06/05 16:51

最近突然发现了leetcode这么个网站,大喜,决定刷完。。

本人菜鸟,只为提高代码水平,记录一下这个过程。

Given an input string, reverse the string word by word.

For example,
Given s = "the sky is blue",
return "blue is sky the".

Clarification:

  • What constitutes a word?
    A sequence of non-space characters constitutes a word.
  • Could the input string contain leading or trailing spaces?
    Yes. However, your reversed string should not contain leading or trailing spaces.
  • How about multiple spaces between two words?
    Reduce them to a single space in the reversed string.

class Solution {public:    void reverseWords(string &s) {        int length=s.length();        string s1="";string s2="";        int k1=length;        int k2=0;        int flag=0;        for(int i=length-1;i>=0;i--)        {        f(i>0){        if((s.at(i)==' ')&&(s.at(i-1)!=' ')||(i==length-1))        {              k1=i;              if((i==length-1)&&(s.at(length-1)!=' '))              k1=length;         }        if((s.at(i)!=' ')&&(s.at(i-1)==' '))        {              if(flag>0) s1.append(" ");              k2=i;              s1.append(s,k2,k1-k2);              flag++;        }        }       if((i==0)&&(s.at(0)!=' ')){              k2=0;              if(flag>0) s1.append(" ");              s1.append(s,k2,k1-k2);       }       }               s=s1;      }};

思路:对任意一个字符串,首先取两个标志K1,K2用于截取某一个单词。初始化时,k2在最顶端,k1在末尾。通过循环判断k1,和k2的位置即可。

0 0
原创粉丝点击