简述网站建设优劣的评价标准,网页设计网站首页代码,软件开发平台下载,综合网站开发实训总结链接#xff1a;https://leetcode.cn/problems/reverse-words-in-a-string/给你一个字符串 s #xff0c;请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结…链接https://leetcode.cn/problems/reverse-words-in-a-string/给你一个字符串 s 请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。示例 1输入s the sky is blue输出blue is sky the示例 2输入s hello world 输出world hello解释反转后的字符串中不能存在前导空格和尾随空格。示例 3输入s a good example输出example good a解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。解决这道题思路可分三步步骤一删除字符串中的多余空格前导空格、单词间的多个空格、尾随空格步骤二反转整个字符串步骤三反转字符串里面的单词。接下来一步一步看步骤一删除字符串中的多余空格1前导空格好删除。定义一个指针从头开始遍历当前面是非空格时停止即可。2单词间的多个空格。跳过连着的空格即可这里处理完尾部最多还剩一个空格或者没有空格3尾随空格。去掉末尾的空格完整代码// 删除空格
void removeSpace(string str) {int slow 0, fast 0, len str.length();// 去掉前面的空格while (len 0 fast len str[fast] ) {fast;}// 去掉中间的空格for ( ; fast len; fast) {if (fast - 1 0 str[fast] str[fast - 1] str[fast] ) {continue;} else {str[slow] str[fast];}}// 去掉后面的空格if (slow - 1 0 str[slow - 1] ) {str.resize(slow - 1);} else {str.resize(slow);}
}步骤二步骤二反转整个字符串不必多言// 反转字符串
void reverseStr(string str, int start, int end) {for (int i start, j end; i j; i, j--) {swap(str[i], str[j]);}
}步骤三反转字符串里面的单词定义两个指针开始遍历字符串当第二个指针是空格时停止两个指针的范围的就是单词反转单词即可for (int i 0; i s.length(); i) {int j i;while (j s.length() s[j] ! ) {j;}// 反转reverseStr(s, i, j - 1);i j;
}完整代码class Solution {
public:// 删除空格void removeSpace(string str) {int slow 0, fast 0, len str.length();// 去掉前面的空格while (len 0 fast len str[fast] ) {fast;}// 去掉中间的空格for ( ; fast len; fast) {if (fast - 1 0 str[fast] str[fast - 1] str[fast] ) {continue;} else {str[slow] str[fast];}}// 去掉后面的空格if (slow - 1 0 str[slow - 1] ) {str.resize(slow - 1);} else {str.resize(slow);}}// 反转字符串void reverseStr(string str, int start, int end) {for (int i start, j end; i j; i, j--) {swap(str[i], str[j]);}}string reverseWords(string s) {removeSpace(s);reverseStr(s, 0, s.length() - 1);for (int i 0; i s.length(); i) {int j i;while (j s.length() s[j] ! ) {j;}reverseStr(s, i, j - 1);i j;}return s;}
};