zoukankan      html  css  js  c++  java
  • leetcode 557. Reverse Words in a String III 、151. Reverse Words in a String

    557. Reverse Words in a String III

    最简单的把空白之间的词反转

    class Solution {
    public:
        string reverseWords(string s) {
            vector<int> blank;
            for(int i = 0;i < s.size();i++){
                if(s[i] == ' ')
                    blank.push_back(i);
            }
            int start = 0;
            int end;
            for(int i = 0;i < blank.size();i++){
                end = blank[i] - 1;
                reverse(s,start,end);
                start = end + 2;
            }
            reverse(s,start,s.size() - 1);
            return s;
        }
        void reverse(string& s,int start,int end){
            while(start < end){
                char tmp = s[end];
                s[end] = s[start];
                s[start] = tmp;
                start++;
                end--;
            }
            return;
        }
    };

    151. Reverse Words in a String

    151题实际上比557题要难一些。难在,字符串中的空格不再仅仅在字符之间,在字符串的开头和结尾都可能有,并且空格的个数不再仅仅是1,而是有可能有许多。

    输出的要求则是只能是字符+一个空格作为中间的间隔。

    思路:先把整个字符串reverse,然后找每个子字符串第一个字符和最后一个,遇到空格都跳过,然后把这些子字符串reverse并+一个空格,最后一个处理的时候,我有点不知道怎么处理多出的末尾

    的空格, 就用了一种暴力的方法

    class Solution {
    public:
        string reverseWords(string s) {
            if(s.empty())
                return "";
            string res = "";
            reverse(s,0,s.size() - 1);
            for(int i = 0;i < s.size();i++){
                if(s[i] != ' '){
                    int j = i;
                    while(s[j] != ' ' && j < s.size())
                        j++;
                    reverse(s,i,j-1);
                    res += s.substr(i,j-i);
                    res += " ";
                    i = j;
                }
            }
            res = res.substr(0,res.size() - 1);
            return res;
        }
        void reverse(string& s,int start,int end){
            while(start < end){
                char tmp = s[end];
                s[end] = s[start];
                s[start] = tmp;
                end--;
                start++;
            }
            return;
        }
    };
  • 相关阅读:
    esper(4-5)- Context 条件
    esper(4-4)-OverLapping Context
    esper(4-3)-Non-Overlapping Context
    esper(4-2)-Category Context
    esper(4-1)-简单context
    esper(3)-窗口&聚合分组
    esper(2)-事件类型
    java常用代码
    idea(3)-jetty配置
    BP(反向传播)算法原理及推导
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/10732793.html
Copyright © 2011-2022 走看看