這道字符串反轉(zhuǎn)的題目,你能想到更好的方法嗎?
周末有一個(gè)朋友問(wèn)了一個(gè)筆試題目,當(dāng)時(shí)還直播寫了答案,但是總覺得寫得不夠好,現(xiàn)在把題目放出來(lái)。大家看看有沒有什么更好的解法
題目
有一個(gè)字符串,如下,要求對(duì)字符串做反轉(zhuǎn)后輸出
//input the sky is blue
//output blue is sky the
我的答案如下面的代碼,我是直接定義成數(shù)組的來(lái)操作,如果定義成 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);
// 寫完了,大家有不明白的評(píng)論下
return 0;
}

評(píng)論
圖片
表情
