LeetCode 557. Reverse Words in a String III(C++版)

来源:互联网 发布:游轮网络 编辑:程序博客网 时间:2024/05/16 12:35

题目描述:

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

思路:

先用空格将句子分隔为单个单词,再讲单词逆转后加入结果string。

代码:

class Solution {public:    string reverse_one_word(string str) {    for(int i = 0; i < str.length()/2; i ++) {    char tmp;    tmp = str[i];    str[i] = str[ str.length() - i - 1 ];    str[ str.length() - i - 1 ] = tmp;    }    return str;    }    string reverseWords(string s) {    //分隔:两种方法:    //借助strtok    int len = s.length();        if(len == 0 || len == 1) return s;    string res;    char * cs = new char[len + 1];    strcpy(cs, s.c_str());    char *p; //分割得到的字符串    p = strtok(cs, " ");    int i = 1; //i是为了控制空格    while(p) {    string sp = p;//分隔得到的子串转化为string类型    string reverse_sp = reverse_one_word(sp);    if(i == 1){    res += reverse_sp;      i ++;     }    else     res = res + " " + reverse_sp;    p = strtok(NULL, " ");    }    return res;    }};


阅读全文
1 0
原创粉丝点击