题解 | #单词倒排#
单词倒排
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;
}
查看14道真题和解析