给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
时间: 2023-04-02 14:02:11 浏览: 128
Python字符串处理实现单词反转
5星 · 资源好评率100%
我可以回答这个问题。可以使用字符串分割和反转的方法来实现。具体步骤如下:
1. 去除字符串 s 前后的空格。
2. 将字符串 s 按照空格分割成一个单词列表。
3. 反转单词列表。
4. 将反转后的单词列表用单个空格连接成一个字符串。
代码实现如下:
```c
#include <stdio.h>
#include <string.h>
void reverseWords(char *s) {
int len = strlen(s);
int i, j, k;
// 去除前后空格
i = ;
while (s[i] == ' ') i++;
j = len - 1;
while (s[j] == ' ') j--;
s[j+1] = '\';
// 分割单词
int wordCount = ;
int wordStart = -1;
for (i = ; i <= j; i++) {
if (s[i] != ' ') {
if (wordStart == -1) {
wordStart = i;
}
} else {
if (wordStart != -1) {
// 找到一个单词
for (k = wordStart; k < i; k++) {
s[wordCount++] = s[k];
}
s[wordCount++] = ' ';
wordStart = -1;
}
}
}
if (wordStart != -1) {
// 处理最后一个单词
for (k = wordStart; k <= j; k++) {
s[wordCount++] = s[k];
}
}
s[wordCount] = '\';
// 反转单词列表
i = ;
j = wordCount - 1;
while (i < j) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
// 反转每个单词
i = ;
while (i < wordCount) {
j = i;
while (s[j] != ' ' && s[j] != '\') {
j++;
}
k = j - 1;
while (i < k) {
char temp = s[i];
s[i] = s[k];
s[k] = temp;
i++;
k--;
}
i = j + 1;
}
}
int main() {
char s[] = " hello world! ";
reverseWords(s);
printf("%s\n", s); // 输出 "world! hello"
return ;
}
```
阅读全文