这道字符串反转的题目,你能想到更好的方法吗?
周末有一个朋友问了一个笔试题目,当时还直播写了答案,但是总觉得写得不够好,现在把题目放出来。大家看看有没有什么更好的解法
题目
有一个字符串,如下,要求对字符串做反转后输出
//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;
}
评论