日沉云起的博客

用更短的代码,写更快的算法(可以查看我的OJ题解目录分类查找需要的OJ题解哦ღ( ´・ᴗ・` )比心)...

pat甲级1050. String Subtraction (20)

欢迎访问我的pat甲级题解目录哦https://blog.csdn.net/richenyunqi/article/details/79958195

1050. String Subtraction (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

Given two strings S1 and S2, S = S1 - S2 is defined to be the remaining string after taking all the characters in S2 from S1. Your task is simply to calculate S1 - S2 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 S1 and S2, respectively. The string lengths of both strings are no more than 104. 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 S1 - S2 in one line.

Sample Input:
They are students.
aeiou
Sample Output:
Thy r stdnts.

算法设计:

由于ascii码只有128个,可以定义一个维度为128的hashTable数组,数组下标表示字符的ascii码,数组元素表示该字符在S2字符串中是否出现过,出现过则置该元素为true,否则为false。然后遍历S1字符串,将hashTable[S1[i]]为false的字符输出即可。

c++代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    char s1[10005],s2[10005];
    gets(s1);
    gets(s2);
    bool hashTable[128]={false};
    for(int i=0;s2[i]!='\0';++i)
        hashTable[s2[i]]=true;
    for(int i=0;s1[i]!='\0';++i)
        if(!hashTable[s1[i]])
            printf("%c",s1[i]);
    return 0;
}

阅读更多

扫码向博主提问

去开通我的Chat快问

richenyunqi

用最短的代码,写最快的算法
  • 擅长领域:
  • 算法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richenyunqi/article/details/79945397
个人分类: 散列 pat甲级
上一篇pat甲级1048. Find Coins (25)
下一篇pat乙级1010. 一元多项式求导 (25)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭