题解 | 倒置字符串
倒置字符串
https://www.nowcoder.com/practice/ee5de2e7c45a46a090c1ced2fdc62355
#include <stdio.h> #include <string.h> #include<assert.h> void swap_char(char* a, char* b)//交换字符位置 { char t=*a; *a = *b; *b = t; } void reverse_alpha(char* left, char* right)//逆序字符串 { while (left < right) swap_char(left++,right--); } void reverse_words(char* str) { assert(str != NULL); int end = strlen(str) - 1, start = end; reverse_alpha(str, str+end);//逆序整个字符串 do//倒着逆序每个单词 { while (start && *(str + start-1) != ' ')//找单词开头下标 start--; reverse_alpha(str + start, str+end); if(start) start -=2;//单词和单词之间隔一个空格,因此-2直接跳到下一个单词最后一个字母下标 end =start;//存储单词最后一个字母下标 } while (end); } int main() { char src[101] = {0}; gets(src); reverse_words(src); puts(src); return 0; }