• LeetCode151 翻转字符串里的单词


    给定一个字符串,逐个翻转字符串中的每个单词。

    示例:  

    输入: "the sky is blue",
    输出: "blue is sky the".
    

    说明:

    • 无空格字符构成一个单词。
    • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
    • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

    进阶: 请选用C语言的用户尝试使用 O(1) 空间复杂度的原地解法。

     


     

     

    //章节 - 数组和字符串    
    //五、小结
    //3.翻转字符串里的单词
    /*
    算法思想:
        一种思路是,可以先分割字符串,把分割出来的单词的存在栈中,然后然后从栈中取出赋值到字符串中即可。
    */
    //算法实现:
    /*
    class Solution {
    public:
        void reverseWords(string &s) {
            stack<string>st;
            string str="";
            for(int i=0;i<s.size();++i){
                if(s[i]!=' ')
                    str+=s[i]+"";
                else{
                    st.push(str);
                    str="";
                }                           
            }
            s="";
            while(st.size()>1){
                s+=st.top()+" ";
                st.pop();
            }
            s+=st.top();
            st.pop();
        }
    };
    */
    /*
    算法思想:
        使用字符串流类stringstream的解法,我们先把字符串装载入字符串流中,然后定义一个临时变量tmp,然后把第一个单词赋给s,这里需要注意的是,如果含有非空格字符,那么每次>>操作就会提取连在一起的非空格字符,那么我们每次将其加在s前面即可;如果原字符串为空,那么就不会进入while循环;如果原字符串为许多空格字符连在一起,那么第一个>>操作就会提取出这些空格字符放入s中,然后不进入while循环,这时候我们只要判断一下s的首字符是否为空格字符,是的话就将s清空即可。
    */
    //算法实现:
    class Solution {
    public:
        void reverseWords(string &s) {
            istringstream is(s);
            string tmp;
            is >> s;
            while(is >> tmp) 
                s = tmp + " " + s;
            if(!s.empty() && s[0] == ' ') 
                s = "";
        }
    };
  • 相关阅读:
    python 面向对象编程的三大特征之一 多态
    python 访问控制
    python 面向对象编程的三大特征之一 继承
    朱兆祺教你如何攻破C语言学习、笔试与机试的难点
    如何画好流程图
    2013年个人计划
    30天敏捷结果(1):总体认识Getting Result敏捷方法
    每天一个linux命令目录
    国嵌C语言学习
    【head first python】1.初识python 人人都爱列表
  • 原文地址:https://www.cnblogs.com/parzulpan/p/10061425.html
Copyright © 2020-2023  润新知