题解 | #单词倒排#
单词倒排
https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
解题思路:
这题和之前我发的句子逆序很类似,只是多出了判断非字母的功能
#include <stdio.h> #include <string.h> int main() { char arry[10000]={'\0'}; int len=0,i=0,j=0,flag=0; while(scanf("%c",&arry[len])!=EOF) { if(arry[len]=='\n') { break; } len++; } for(i=len-1;i>=0;i--) { if((arry[i]<'A'||arry[i]>'Z')&&(arry[i]<'a'||arry[i]>'z'))//判断是否非字母部分 { for(j=len-flag-1;j<len;j++) { if((arry[j]<'A'||arry[j]>'Z')&&(arry[j]<'a'||arry[j]>'z'))//判断是否非字母部分 { //不处理 } else//遇到字母部分输出字母 { printf("%c",arry[j]); } } len=len-flag;//将字符串总长缩小为原来总长减已经输出字符串长度 flag=0;//标志位置零 printf(" ");//输出空格 } flag++; } i=0; /*输出第一位是字母的字符串直到非字母为停止*/ if((arry[0]>'A'&&arry[0]<'Z')||(arry[0]>'a'&&arry[0]<'z')) { while(1) { if((arry[i]<'A'||arry[i]>'Z')&&(arry[i]<'a'||arry[i]>'z')) { break; } printf("%c",arry[i]); i++; } } return 0; }