题解 | #单词倒排#

单词倒排

https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836

#include <stdio.h>
#include<string.h>
/*__DBL_MANT_DIG__1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母
*/
int main() {
    char str[5000] = {0};
    int dp[5000] = {0};
    gets(str);
    int i;
    int len = strlen(str);
    for (i = 0; i < len; i++) {
        if ((str[i] >= 'A' && str[i] <= 'Z' ) || (str[i] >= 'a' && str[i] <= 'z')) {
            dp[i] = 1;
        }
    }
    int num = 0;
    for (i = len - 1; i >= 0; i--) { //从后往前
        if (dp[i] == 1) { //是字母
            num++;   //统计字母数
            if (i == 0) {
                for (int j = 0; j < num; j++) { //只输出字母,倒着输出
                    printf("%c", str[i + j]);
                }
            }
        } else  {  //if(dp[i]==0)  不是字母
            for (int j = 0; j < num; j++)
                printf("%c", str[i + j + 1]);
            num = 0;
            printf(" ");
        }

    }
}

全部评论

相关推荐

09-29 15:34
已编辑
北京航空航天大学 C++
做个有文化的流氓:结果是好的,过程不重要,而且你的offer太多了
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务