本文主要是介绍PAT 1050 String Subtraction [hash],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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.
----------------------------------这是题目和解题的分割线----------------------------------
However, it might not be that simple to do it fast. 题目已经给出明示不能用两层循环啦。
#include<stdio.h>
#include<string.h>int main()
{int exsit[128] = {},i;char x1[10005],x2[10005];gets(x1);gets(x2); //ASCII码表的起始值是'\0' for(i=0;i<strlen(x1);i++)exsit[x1[i]-'\0'] = 1;for(i=0;i<strlen(x2);i++)exsit[x2[i]-'\0'] = 0;for(i=0;i<strlen(x1);i++)if(exsit[x1[i]-'\0']) printf("%c",x1[i]);
}
看书上才知道,原来bool数组的下标除了是可以int外还可以是char类型。在这种只需判断有无的题中会比较方便。
#include<cstdio>
#include<iostream>
#include<string>using namespace std;int main()
{bool exsit[128];int i;string x1,x2;getline(cin,x1);getline(cin,x2); for(i=0;i<x1.length();i++)exsit[x1[i]] = true;for(i=0;i<x2.length();i++)exsit[x2[i]] = false;for(i=0;i<x1.length();i++)if(exsit[x1[i]]) printf("%c",x1[i]);
}
这篇关于PAT 1050 String Subtraction [hash]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!