当前位置: 首页 > news >正文

L1-011 A-B(PTA天梯赛)

本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。

输入格式:

输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。

输出格式:

在一行中打印出A−B的结果字符串。

输入样例:

I love GPLT!  It's a fun game!
aeiou

输出样例:

I lv GPLT!  It's  fn gm!

代码长度限制

16 KB

时间限制

150 ms

内存限制

64 MB

栈限制

8192 KB

我的思路:这道题如果使用标记元素然后输出的时候选择跳过输出就可以非常简单的完成(代码会放下面的),但是我们如果想用其他的写法哪怕复杂一点,那么可以使用c++的<unordered_set>这个头文件中的unordered_set这个无序集合容器。

这个集合的特点是:

1、无序的(基于哈希表实现的)

2、无重复性(自动去除重复元素)

3、高效查找性

利用.find()与.end()对比来完成快速的查找,存储方式是.insert();就是插入元素。掌握这些就足够了。

解法一:利用查找元素并标记,输出的时候跳过标记点完成输出

#include <bits/stdc++.h>
using namespace std;
int main (void) {
    string A,B;
    getline(cin,A);
    getline(cin,B);
    for(int i=0;i<A.size();i++){
        for(int j=0;j<B.size();j++){
            if(A[i]==B[j]){
                A[i]='-';//这里就是利用负号完成标记,利用其他符号也是可以的
                break;
            }
        }
    }
    for(int i=0;i<A.size();i++){
        if(A[i]!='-'){//遇到非标记元素(这里就是非负号的时候输出)
            cout<<A[i];
        }
    }
    return 0;
}

解法二:利用unordered_set<char> 字符类型的无序集合进行快速查找,然后记录非重复的字符,最后完成输出。

// #include<bits/stdc++.h>//写万能头文件其实是比较舒服的
#include<iostream>
#include<unordered_set>//这个就是无序集合unordered_set的头文件
using namespace std;
string sub(const string &s1,const string &s2){//这里使用的常量引用类型,这样可以省去拷贝的时间和防止修改
    string s;
    unordered_set<char> ss;
    for(char x:s2){
        ss.insert(x);
    }
    for(char x:s1){//范围for循环,完成对无序集合的遍历
        if(ss.find(x)==ss.end()){//根据find()返回的数据进行判断是否找到重复的元素了
            s+=x;
        }
    }
    return s;
}
int main(){
    string s1,s2;
    getline(cin,s1);
    getline(cin,s2);
    cout<<sub(s1,s2);
}

到这里就结束啦!!!

笨蛋也是可以努力变强的呢,再努力一点!!!!

欢迎小伙伴们评论区讨论,提问。

我是荒古前,期待你的关注~~~

~~~完结撒花✌y( •̀ ω •́ )y✌~~~

相关文章:

  • 【spring】原生xml配置版
  • Java核心语法:从变量到控制流
  • 基于大模型的视神经脊髓炎手术全流程风险预测与诊疗方案研究
  • Android双亲委派
  • 模板注入(Twig)
  • 文件上传漏洞
  • 在CentOS系统上安装Conda的详细指南
  • Kubernetes教程(六)Harbor的安装和使用
  • 用DeepSeek学Android开发:Android初学者遇到的常见问题有哪些?如何解决?
  • react脚手架(creat-react-app)
  • FreeRTOS 任务间通信机制:队列、信号量、事件标志组详解与实验
  • RabbitMQ 高级特性:从 TTL 到消息分发的全面解析 (下)
  • Spring Boot静态资源访问顺序
  • redis有哪几种持久化方式
  • 通过数据库网格架构构建现代分布式数据系统
  • 顺序表与链表·续
  • Xshell链接Linux机器更换jdk版本
  • 基于架构的软件开发(ABSD)
  • C++11新特性1.原始字面量
  • 学之思社区版考试系统docker-compose部署
  • 网站建设正文字体多大合适/seo查询排名软件
  • 在线名片制作网站开发/seo优化seo外包
  • dedecms 网站地图生成/石狮seo
  • 南充网站建设/qq群推广网站免费
  • wordpress 文章格式/谷歌seo是做什么的
  • 软件开发需要哪些软件/郑州seo优化顾问