• 一道字符串题目


    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"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;
        }
    };
  • 相关阅读:
    算法题--无重复字符的最长子串
    算法题--数字反转
    算法题--两数之和
    idea下把svn项目改为git项目的小技巧
    window下查看zookeeper节点信息
    C++知识点总结
    Qt读写Json格式配置文件
    Git基础命令学习
    QML学习笔记
    AE开发之默认滚轮缩放功能反置(C#修改注册表数据)
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12878367.html
Copyright © 2020-2023  润新知