14、 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初 始顺序。 输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 请用C语言使用三种方法实现
时间: 2023-05-21 21:02:27 浏览: 85
方法一:使用指针
```c
#include <stdio.h>
#include <string.h>
void reverse(char* start, char* end) {
while (start < end) {
char temp = *start;
*start++ = *end;
*end-- = temp;
}
}
char* reverseWords(char* s) {
char* start = s;
char* end = s;
while (*end != '\0') {
if (*end == ' ') {
reverse(start, end - 1);
start = end + 1;
}
end++;
}
reverse(start, end - 1);
return s;
}
int main() {
char s[] = "Let's take LeetCode contest";
printf("%s\n", reverseWords(s));
return 0;
}
```
方法二:使用数组
```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;
}
}
char* reverseWords(char s[]) {
int len = strlen(s);
int start = 0;
int end = 0;
while (end <= len) {
if (s[end] == ' ' || s[end] == '\0') {
reverse(s, start, end - 1);
start = end + 1;
}
end++;
}
return s;
}
int main() {
char s[] = "Let's take LeetCode contest";
printf("%s\n", reverseWords(s));
return 0;
}
```
方法三:使用递归
```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 reverseWordsHelper(char s[], int start, int end) {
if (start >= end) {
return;
}
int i = start;
int j = start;
while (j <= end) {
if (s[j] == ' ') {
reverse(s, i, j - 1);
i = j + 1;
}
j++;
}
reverse(s, i, j - 1);
reverseWordsHelper(s, start, i - 2);
reverseWordsHelper(s, j, end);
}
char* reverseWords(char s[]) {
int len = strlen(s);
reverseWordsHelper(s, 0, len - 1);
return s;
}
int main() {
char s[] = "Let's take LeetCode contest";
printf("%s\n", reverseWords(s));
return 0;
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)