标签:单词 58 offer 反转 示例 空格 ans 输入
剑指offer(58)-I
剑指 Offer 58 - I. 翻转单词顺序
难度简单203
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
示例 1:
输入: "the sky is blue"
输出: "blue is sky the"
示例 2:
输入: " hello world! "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: "a good example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
从后向前遍历,利用两个指针端点即可
class Solution {
public:
string reverseWords(string s) {
int n = s.size();
//双端指针即可 从后向前遍历 去反转字词
string ans = "";
for (int i = n - 1; i >= 0; i--) {
if (s[i] != ' ') {
int right = i;
while (i >= 0 && s[i] != ' ') {
i--;
}
ans += s.substr(i + 1, right - i) + " ";
}
}
//ans.size()-1是因为最后有一个空格
return ans.substr(0, ans.size() - 1);
}
};
标签:单词,58,offer,反转,示例,空格,ans,输入 来源: https://www.cnblogs.com/BailanZ/p/16227261.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。