PAT(B) 1093 字符串A+B(Java和C)

68 篇文章 3 订阅
27 篇文章 3 订阅

题目链接:1093 字符串A+B (20 point(s))

题目描述

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

输入格式

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

输出格式

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

输入样例

This is a sample test
to show you_How it works

输出样例

This ampletowyu_Hrk

Java代码

/**********************************************************************************
Submit Time			Status		Score	Problem	Compiler		Run Time	User
7/31/2019, 21:04:26	Accepted	20		1093	Java (openjdk)	225 ms		wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	private static void output(char[] arr, boolean[] ascii) {
		for (int i = 0; i < arr.length; ++i) {
			if (false == ascii[arr[i]]) {
				System.out.print(arr[i]);
				ascii[arr[i]] = true;
			}
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		char[] a = br.readLine().toCharArray();
		char[] b = br.readLine().toCharArray();
		boolean[] ascii = new boolean[127];
		output(a, ascii);
		output(b, ascii);
	}
}

Java提交结果

在这里插入图片描述

C代码

/*********************************************************************************
Submit Time			Status		Score	Problem	Compiler	Run Time	User
7/31/2019, 20:35:10	Accepted	20		1093	C (gcc)		17 ms		wowpH
*********************************************************************************/
#include<stdio.h>
#include<memory.h>
int main() {
	char ascii[127], ch;						// ascii[]保存字符是否已输出过
	memset(ascii, 0, sizeof(ascii));			// 0表示未输出过
	ascii[10] = 1;								// 不输出换行,'\n'的ASCII值为10
	while ((ch = getchar()) != EOF) {			// 接收字符,直到结束
		if (0 == ascii[ch]) {					// 字符ch未输出过
			printf("%c", ch);					// 输出字符ch
			ascii[ch] = 1;						// 设ch为已输出过
		}
	}
	return 0;
}

C提交结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值