简单的算法编程题-任意段落按照单词逆序输出_一级段落逆序实现

把这个问题抛给温州皮鞋厂老板,老板直接就说这个题目的本意是让你提出stack的解决方案

  what?stack?too low!

  因为这么个问题还要实现一个stack有点场面大了,事实上谁不知道你把一个个单词push进去,然后再pop出来不就好了吗?所以说stack方案太通用,不足挂齿。…周末没事干时折腾点此类问题,没有错,错在拉开蚊帐睡觉时吵醒疯子和小小,事情偶尔会变严重。

  另外,使用C语言完成和使用Java完成完全不同,Java调用现成的class会非常简单,复杂度完全隐藏在了内部。此外,C语言是否可以用strtok也必须有所约束。以下是我的方案,非常好玩,像我这种不会编程的人,请不要笑我。因为我没有用strlen,没有用strcpy,没有用malloc…:

#include <stdio.h>
#include <stdlib.h>

int ok(char c)
{
        if ( (c <= 90 && c >= 65) || (c <=122 && c >= 97) )
                return 1;
        return 0;
}

int main(int argc, char **argv)
{
        char orig[] = {'i', ' ', 'a', 'm', ' ', 'a', ' ', 's', 't', 'u', 'd', 'e', 'n', 't', ',', 'a', 'n', 'd', ' ', 'y', 'o', 'u', 0};

        char *buf = orig, *tbuf = orig;
        int i = 0, j = 0;
    // 获取长度
        while (*tbuf++ != 0) j++;

    // 前后逆序交换
        for (j--; j > i; i++, j--) {
                char c = orig[i];
                orig[i] = orig[j];
                orig[j] = c;
        }

    // 遍历
        while (*buf != 0) {
                int k = 0, p = 0;
                char *temp = buf;
                while (ok(*(buf++))) {
                        k++;
                }
        // 按照单词逆序
                for (k--; p < k; p++, k--) {
                        char c = temp[p];
                        temp[p] = temp[k];
                        temp[k] = c;
                }
        }
    // 打印结果
        printf("%s\n", orig);
}

看似个鸳鸯蝴蝶,不应该的年代。嗯?有啥不应该?

  不多说。

原文链接: https://blog.csdn.net/dog250/article/details/80211320

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    简单的算法编程题-任意段落按照单词逆序输出_一级段落逆序实现

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/406962

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月26日 上午10:24
下一篇 2023年4月26日 上午10:24

相关推荐