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