zoukankan      html  css  js  c++  java
  • 一道字符串题目

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。

    示例 1:

    输入: "the sky is blue"

    输出: "blue is sky the"

    示例 2:

    输入: "  hello world!  "

    输出: "world! hello"

    解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

    示例 3:

    输入: "a good   example"

    输出: "example good a"

    解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

    说明:

    无空格字符构成一个单词。

    输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

    如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

    class Solution {
    public:
        string reverseWords(string s) {
            string tmp;
            string last;
            string empty_k = " ";
            int n;
            if(s.empty()){return s;}
            for (int i = 0; i <= s.length();i++)
            {
                if(s[i] != ' ' && s[i] != '')    
                {
                    tmp += s[i];
                }
                else
                {
                    last.insert(0,empty_k);
                    last.insert(0,tmp);
                    tmp.clear();
                }
            }
            //去除行中重复
            for (int i = 0; i != last.size();i++)
            {
                if(i == -1) {i = 0;}
                if(last[i] == ' ' && last [i + 1] == ' ')
                {
                    last.erase(i+1,1);
                    i = i - 2;
                }
            }
            //去除首位重复
            while(last[0] == ' ')
            {
                last.erase(0,1);
            }
            n = last.size() - 1;
            while(last[n] == ' ')
            {
                last.erase(n,1);
                n = last.size() - 1;
            }
            return last;
        }
    };
    class Solution {
    public:
        string reverseWords(string s) {
            string tmp;
            string last;
            string empty_k = " ";
            int n;
            if(s.empty()){return s;}
            for (int i = 0; i <= s.length();i++)
            {
                if(s[i] != ' ' && s[i] != '0'
                {
                    tmp += s[i];
                }
                else
                {
                    last.insert(0,empty_k);
                    last.insert(0,tmp);
                    tmp.clear();
                }
            }
            //去除行中重复
            for (int i = 0; i != last.size();i++)
            {
                if(i == -1) {i = 0;}
                if(last[i] == ' ' && last [i + 1] == ' ')
                {
                    last.erase(i+1,1);
                    i = i - 2;
                }
            }
            //去除首位重复
            while(last[0] == ' ')
            {
                last.erase(0,1);
            }
            n = last.size() - 1;
            while(last[n] == ' ')
            {
                last.erase(n,1);
                n = last.size() - 1;
            }
            return last;
        }
    };
  • 相关阅读:
    【BZOJ1489】[HNOI2009]双递增序列(动态规划)
    【BZOJ1488】[HNOI2009]图的同构(Burside引理,Polya定理)
    【BZOJ4888】[TJOI2017]异或和(树状数组)
    【BZOJ1487】[HNOI2009]无归岛(动态规划)
    【BZOJ1485】[HNOI2009]有趣的数列(组合数学)
    【BZOJ1484】[HNOI2009]通往城堡之路 (贪心)
    【BZOJ1452】[JSOI2009]Count(树状数组)
    【BZOJ1449】[JSOI2009]球队收益(网络流,费用流)
    【BZOJ1444】[JSOI2009]有趣的游戏(高斯消元,AC自动机)
    【BZOJ1434】[ZJOI2009]染色游戏(博弈论)
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12878367.html
Copyright © 2011-2022 走看看