题目描述:
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;
}
};