一起lintcode! ------ Reverse Words in a String


  • 太阁x英雄榜

    本题是基础中的基础,可是用C++这种反人类的语言来写还是有坑。
    先把代码贴出。

    /**
     * @param s : A string
     * @return : A string
     */
    string reverseWords(string s) {
        // write your code here
        int i = s.size() - 1;
        string result = "";
        while(i >= 0){
            while(i >=0 && s[i] == ' '){
                i--;
            }
            string tmp = " ";
            while(i >=0 && s[i] != ' '){
                tmp += s[i];
                i--;
            }
            result += reverseString(tmp);
        }
        return result;
    }
    
    string reverseString(string s){
        string result = "";
        for (int i = s.size()-1; i>=0; --i){
            result += s[i];
        }
        return result;
    }
    

    这段代码里面有几点注意事项:

    1. 判断string中的一个元素是否为空格的条件是str[i] == ’ ',记住这里需要是单引号不然会报错。

    2. 可以不用三步翻转法。从后往前分段收集单词后,分段翻转就好。这样只需要调用reverse函数一次。这里一定要留意跳过空格。而处理这种情况最好的方式是通过写while循环即可。

    这里有些常用的关于string的函数,大家也可以了解一下:
    处理string对象的字符常用方法如下:
    isalnum():判断字符是否是字母或数字;
    isalpha():判断字符是否是字母;
    iscntrl():判断字符是否是控制字符;
    isdigit():判断字符是否是数字;
    isgraph():判断字符是否是可打印的非空格字符;
    ispunct():判断字符是否是标点符号;
    isspace():判断字符是否是空白字符;
    isupper():判断字符是否是大写字母;
    isxdigit():判断字符是否是十六进制数;
    toupper():转换为大写字母;
    tolower():转换为小写字母。


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待