首页 > 其他分享 >PAT Basic 1093. 字符串A+B

PAT Basic 1093. 字符串A+B

时间:2023-04-13 16:24:30浏览次数:36  
标签:str2 PAT 1093 MAX str1 LEN flag Basic 字符串

PAT Basic 1093. 字符串A+B

1. 题目描述:

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

2. 输入格式:

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

3. 输出格式:

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

4. 输入样例:

This is a sample test
to show you_How it works

5. 输出样例:

This ampletowyu_Hrk

6. 性能要求:

Code Size Limit
16 KB
Time Limit
400 ms
Memory Limit
64 MB

思路:

维护flag数组保证每种字符只输出1次即可。其他都是之前踩过的坑:

  • 存储字符串的字符数组大小设为\(10^6+1+1\),即最大长度+末尾换行符+空字符。
  • 因为字符串中可能含有空格符,所以不能使用scanf()读入,这里使用fgets()

另外就是用""{0}都会使字符数组各元素初始化为0,因为空字符'\0'的ASCII码为0,还有这里学到了空格符的ASCII码为32。

My Code:

#include <stdio.h>

#define MAX_LEN (1000000 + 1 + 1) // MAX_LEN + '\n' + '\0'

int main(void)
{
    char str1[MAX_LEN] = ""; // this will set every element to '\0', i.e. 0
    char str2[MAX_LEN] = "";
    char flag[127] = {0}; // this also will set every element to 0
    int i=0; // iterator
    
    //fgets(char * s, int size, FILE * stream)
    fgets(str1, MAX_LEN, stdin);
    fgets(str2, MAX_LEN, stdin);
    
    for(i=0; str1[i]!='\n'; ++i)
    {
        if(!flag[str1[i]])
        {
            printf("%c", str1[i]);
            flag[str1[i]] = 1;
        }
    }
    
    for(i=0; str2[i]!='\n'; ++i)
    {
        if(!flag[str2[i]])
        {
            printf("%c", str2[i]);
            flag[str2[i]] = 1;
        }
    }
    printf("\n");
    
    
//     flag[99] = 1;
//     for(i=0; i<100; ++i)
//     {
//         if(flag[i] == 0) printf("Yes!\n");
//     }
    
    //printf("%d%c%d\n", 1,32,2); // the ASCII of space is 32!
    
    return 0;
}

标签:str2,PAT,1093,MAX,str1,LEN,flag,Basic,字符串
From: https://www.cnblogs.com/tacticKing/p/17315231.html

相关文章

  • PAT Basic 1091. N-自守数
    PATBasic1091.N-自守数1.题目描述:如果某个数\(K\)的平方乘以\(N\)以后,结果的末尾几位数等于\(K\),那么就称这个数为“\(N\)-自守数”。例如\(3×92^2=25392\),而\(25392\)的末尾两位正好是\(92\),所以\(92\)是一个\(3\)-自守数。本题就请你编写程序判断一个给定的......
  • PAT Basic 1090. 危险品装箱
    PATBasic1090.危险品装箱1.题目描述:集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里。比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸。本题给定一张不相容物品的清单,需要你检查每一张集装箱货品清单,判断它们是否能装在同一只箱子里。2.输入格......
  • PathView实现炫酷SVG动画
    解析SVG,需要将一个androidsvg.jar包含进libshttps://github.com/geftimov/android-pathview<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientati......
  • springboot 中的 classpath 指的是什么路径?
    classpath其本质其实是指项目打包后的classes下的路径,一般用来指代“src/main/resources”下的资源路径。通常会在各种配置文件中使用【classpath】关键字,例如:yml配置文件:WebMvcConfigurer配置类:......
  • PAT-basic-1028 人口普查 java c++
    一、题目某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过......
  • PAT-basic-1029 旧键盘 java c++
    一、题目旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入格式:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括......
  • PAT Basic 1089. 狼人杀-简单版
    PATBasic1089.狼人杀-简单版1.题目描述:以下文字摘自《灵机一动·好玩的数学》:“狼人杀”游戏分为狼人、好人两大阵营。在一局“狼人杀”游戏中,1号玩家说:“2号是狼人”,2号玩家说:“3号是好人”,3号玩家说:“4号是狼人”,4号玩家说:“5号是好人”,5号玩家说:“4号是好人”......
  • PAT Basic 1088. 三人行
    PATBasic1088.三人行1.题目描述:子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是2位正整数;把甲的能力值的2个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的X倍;乙的能力值是丙的Y倍。......
  • xpath数据解析
    xpath解析xpath是一种在XML文档中査找信息的语言,可用来在XML文档中対元素和属性进行遍万。HTML属于XML的一个子集。1、导入fromlxmlimportetree#如果导入报错,则使用以下方式fromlxmlimporthtmletree=html.etree2、创建xpath对象#解析XML文件et=etree.XML......
  • PAT Basic 1087. 有多少不同的值
    PATBasic1087.有多少不同的值1.题目描述:当自然数 \(n\) 依次取\(1、2、3、……、N\) 时,算式 \(⌊n/2⌋+⌊n/3⌋+⌊n/5⌋\) 有多少个不同的值?(注:\(⌊x⌋\) 为取整函数,表示不超过 \(x\) 的最大自然数,即 \(x\) 的整数部分。)2.输入格式:输入给出一个正整数 \(N\)(\(......