c++笔记---数组的特殊用法 1093 字符串A+B (20 分)

13 篇文章 0 订阅
8 篇文章 0 订阅

数组新用法
PAT题目 1093 字符串A+B (20 分)
c++中数组 简单定义int arr[100]={1,2,3,4,5,6,0};

本以为数组arr[100]中的中括号里只能用int类型的数字,没想到还可以用字母;
在做PAT 乙级题目 1093 字符串A+B中发现

题目1093 字符串A+B (20 分)

给定两个字符串 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
结尾无空行
我用自己的写法 运行时间长 内存大 行数多
但写出来还是快乐的
请添加图片描述

其中有些头文件不必要 在做题过程中想到一些方法就加上了头文件

#include<iostream>
#include<set>
#include<string>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
	set<char>Set1;
	string str1;
	string str2;
	getline(cin, str1);
	getline(cin, str2);
	string str = str1 + str2;
	
	for (int i = 0; i < str.size(); i++)
	{
		Set1.insert(str[i]);
	}
	vector<char>v1;
	for (auto i : Set1)
	{
		v1.push_back(i);
	}
	for (int i = 0; i < str.size(); i++)
	{
		for (auto j : v1)
		{
			if (str[i] == j)
			{
				cout << str[i];
				vector<char>::iterator pos = find(v1.begin(), v1.end(), j);
				v1.erase(pos);
			}
		}
	}
	return 0;
}

测试结果为
在这里插入图片描述
又慢又大 行数也多
在这里插入图片描述

在网上看到别人的写法
真是感觉差距太大了
别人的代码
就这么一点点,刚看的时候我都惊呆了,怎么可以那么少!
在这里插入图片描述
但也看到了差距
在这里插入图片描述
别人咋那么那么强
在这里插入图片描述
只能膜拜大佬
在这里插入图片描述
下面上代码

#include <iostream>
using namespace std;
int main(){
	int a[128]={0};
	string s1,s2,s3;
	getline(cin,s1);
	getline(cin,s2);
	s3=s1+s2;
	for(int i=0;i<s3.length()  ;i++){
		if(a[s3[i]]==0){
			cout<<s3[i];
			a[s3[i]]++;
		}
	}
	return 0;
}

测试结果为
在这里插入图片描述

第一次遇到这种用法,真的好简洁。

以前自己写出来了题目, 就没怎么搜别人的写法了。
这次真的发现了,和别人的差距真的太大了。
内心先佩服了。
然后归于平淡!
请添加图片描述
加油吧,奥里给!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HelloWord~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值