腾讯50题精选
题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
解题思路以及运用知识点
- 本题和昨天的那题很类似,但又有不同,不同处在于,需要判断字符串中每个单词的位置,并将每个单词字母反转,且不改变其单词位置。这是解题的难点以及关键点。
- 那么,如何判断每个单词的位置呢?从题中我们可以知道,每个单词之间是通过空格区分的,也就是说,每个单词的前后都会有空格,那么,我们就可以通过空格的位置来区分每个单词!我们可以用find()函数查找!
- find()函数:int a=s.find(t) //t在s中的第a个位置上!
Leetcode运行代码
class Solution {
public:
string reverseWords(string s) {
string res = "";
int pre = 0;
int pos = s.find(" ", pre);
while(pos!=string::npos){
for(int i = pos-1;i>=pre;i--){
res += s[i];
}
res += " ";
pre = pos+1;
pos = s.find(" ", pre);
}
for(int i = s.length()-1;i>=pre;i--){
res += s[i];
}
return res;
}
};
欢迎关注,一起学习!