首页 文章详情

这道字符串反转的题目,你能想到更好的方法吗?

嵌入式Linux | 71 2022-06-28 11:47 0 0 0
UniSMS (合一短信)

周末有一个朋友问了一个笔试题目,当时还直播写了答案,但是总觉得写得不够好,现在把题目放出来。大家看看有没有什么更好的解法


题目


有一个字符串,如下,要求对字符串做反转后输出


//input  the sky is blue

//output blue is sky the



我的答案如下面的代码,我是直接定义成数组的来操作,如果定义成 char * str  的话,大家有没有什么思路呢?


#include "stdio.h"

char input[] = {"the sky is blue"};

//题目:

//input the sky is blue

//output blue is sky the

void reverseWords(char* s, int n) {

char ch;
int i=0;
for (i=0; i<n/2; i++) {
ch = s[i];
s[i] = s[n-i-1];
s[n-i-1] = ch;

}

}

//eulb si yks eht

void reverseWords_by_space(char* s, int n) {

int i = 0;
int len = 0;
for (i=0; i<n; i++) {
if (s[i] == ' ') {
reverseWords(s+i-len, len);
len = 0;
} else if (s[i] == '\0') {
reverseWords(s+i-len, len);
len = 0;
}
if (s[i] != ' ') {
++len;
}

}

}

int main(void) {

printf("%s\n", input);
reverseWords(input,strlen(input));
reverseWords_by_space(input,sizeof(input));
printf("%s\n", input);
// 写完了,大家有不明白的评论下

return 0;

}




good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter