给一个字符串 s ,请你反转字符串中单词 的顺序。 单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个空格连接的结果字符串,用C++进行实现
时间: 2024-03-06 20:19:03 浏览: 61
```c
#include <stdio.h>
#include <string.h>
void reverse(char* s, int start, int end) { // 反转字符串中的一段
while(start < end) {
char temp = s[start];
s[start++] = s[end];
s[end--] = temp;
}
}
void reverseWords(char* s) {
int len = strlen(s);
if(len == 0) return; // 字符串为空,直接返回
reverse(s, 0, len - 1); // 先反转整个字符串
int start = 0;
for(int i = 0; i < len; i++) {
if(s[i] == ' ') {
reverse(s, start, i - 1); // 反转单词
start = i + 1; // 更新下一个单词的起始位置
}
}
reverse(s, start, len - 1); // 反转最后一个单词
}
int main() {
char s[] = "the sky is blue";
reverseWords(s);
printf("%s\n", s); // 输出:blue is sky the
return 0;
}
```
阅读全文