PAT Basic 1093. 字符串A+B (C语言实现)

我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。此处文章目前已更新至与Github Pages同步。欢迎star我的repo

题目

给定两个字符串 A A A B B B ,本题要求你输出 A + B A+B A+B ,即两个字符串的并集。要求先输出 A A A ,再输出 B B B ,但
重复的字符必须被剔除

输入格式:

输入在两行中分别给出 A A A B B B ,均为长度不超过 1 0 6 10^6 106 的、由可见 ASCII 字符
(即码值为32~126)和空格组成的、由回车标识结束的非空字符串。

输出格式:

在一行中输出题面要求的 A A A B B B 的和。

输入样例:

This is a sample test
to show you_How it works

输出样例:

This ampletowyu_Hrk

思路

用C语言做字符串的题,真是其乐无穷

又到了创建128长度字符数组的时候了:用字符的ascii码作为数组索引是最简单的处理方式。

这道题具体思路就是 逐字符 读取,无需保留整个字符串(长度不超过 10^6 就是为了那些不方便逐字符读取的语言准备的,C语言根本不需要这个限制好吧~)。

读到的字符在ascii数组(就这么叫了)增加个计数,这样下次在读到时,就不做任何事情就好了。

循环控制就是用换行符的数量,读到第二个就退出去。

代码

最新代码@github,欢迎交流

#include <stdio.h>

int main()
{
    char c;
    int lines = 0, ascii[128] = {0};

    while(lines < 2)
    {
        c = getchar();
        if(c == '\n')
            lines++;
        else if(!ascii[(int)c])
        {
            putchar(c);
            ascii[(int)c]++;
        }
    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值