专栏首页vblogPAT1050 String Subtraction (20分) 用布尔数组

PAT1050 String Subtraction (20分) 用布尔数组

题目

Given two strings S​1​​ and S​2​​ , S=S​1​​ −S​2​​ is defined to be the remaining string after taking all the characters in S​2​​ from S​1​​ . Your task is simply to calculate S1​​​ −S​2​​ for any given strings. However, it might not be that simple to do it fast.

Input Specification: Each input file contains one test case. Each case consists of two lines which gives S​1​​ and S​2​​ , respectively. The string lengths of both strings are no more than 10​4​​ . It is guaranteed that all the characters are visible ASCII codes and white space, and a new line character signals the end of a string.

Output Specification: For each test case, print S​1​​ −S​2​​ in one line.

Sample Input:

They are students.
aeiou

Sample Output:

Thy r stdnts.

解析

  • 所谓 s1 - s2 就是从s1中去除出现在s2中的字符,输出剩余部分。
  • 所以可以逐个判断s1的字符,判断其是否在s2中出现,若未出现则输出,否则跳过即可。
  • 为了操作简单,使用一个布尔数组flag[256]ascii字符也就是0-255,所以遍历一次s2,将flag[s2[i]]设置为true即表示当前字符在s2中出现过。

代码

#include <iostream>
#include <string>
#include <string.h>
using namespace std;

int main() {
    string s1, s2;
    // 原字符串中包含空格,使用getline
    getline(cin, s1);
    getline(cin, s2);
    int len1 = s1.length(), len2 = s2.length();
    bool flag[256] = {false};
    // 在s2中出现的字符,在s1中剔除
    for (int i = 0; i < len2; ++i) flag[s2[i]] = true;
    // 逐个字符判断,若未在s2中出现则输出
    for (int i = 0; i < len1; ++ i)
        if (!flag[s1[i]]) cout << s1[i];
    return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PAT 1016 Phone Bills (25分) sort() + map 逻辑较为复杂

    A long-distance telephone company charges its customers by the following rules:

    vivi
  • ElasticSearch7.8.0Docker安装及入门最基本操作

    term 查询, 可以用它处理数字(numbers)、布尔值(Booleans)、日期(dates)以及文本(text,不推荐)。

    vivi
  • PAT 1027 Colors in Mars (20分) 10进制转13进制

    People in Mars represent the colors in their computers in a similar way as the E...

    vivi
  • 【脑洞】假如AlphaGo能够学习人类价值观

    Google的机器人AlphaGo赢了人类围棋高手李世石,朋友圈又开始开脑洞,大致上是暗黑版科幻小说走向,机器人机器学习自我复制自我强化,无论智力体能都远超人类...

    叶锦鲤
  • Python计算信息熵实例

    假设数据集有m行,即m个样本,每一行最后一列为该样本的标签,计算数据集信息熵的代码如下:

    砸漏
  • 18天,55家公司吸金48亿 企服融资“正春天”:未来赚钱主场 摆脱不温不火

    ? 来源:铅笔道  ---- “10月22日,云计算PaaS平台“容联云通讯”获得数亿元D轮融资;10月24日,企服类数据分析平台“星环科技”获得近5亿元D2...

    腾讯SaaS加速器
  • 设计一个网站(域名)的镜像

    假设你有一个经常去逛的海外网站,但是由于跨洋网络或者某种不可貌似的原因。你需要做一个 海外节点ip的代理,才能访问得到这个网站。但是可能某天发现这个方法也不太好...

    mariolu
  • 饭团开通一周,3人学会了比特币操作

    最近比特币行情火爆,很多人听到此消息后全当作泡沫,没有绿灯思维。而有少许人则去快速学习区块链的相关知识,去探寻它背后的本质规律。每一个新技术的出现都会颠覆许多已...

    申龙斌
  • 互联网思维:传统企业转型毒药

    在当前我国大部分传统企业深陷互联网焦虑之时,“互联网思维”这一名词迅速传唱开来。像是一剂灵丹妙药,所谓的“互联网思维”可以一针见血、包治百病,解决一切的问题。似...

    博文视点Broadview
  • 冲击亚马逊,Google 计划让自动驾驶卡车送快递?

    据 Quartz 报道,Google 目前已经获得了一项运送快递的自动驾驶卡车技术专利。届时,获得专利的卡车上将装满安全小隔间,用户只需要通过安全码和信用卡就可...

    新智元

扫码关注云+社区

领取腾讯云代金券