腾讯50题精选
题目描述解题思路以及运用知识点Leetcode运行代码
题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 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
;
}
};
欢迎关注,一起学习!