PAT笔记
1534 String Subtraction
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 S2-S1 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 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 S1-S2 in one line.
题目的意思实际上就是把出现在S2中的字符在S1中消除掉,这里我们可以利用双重for循环,那样时间复杂度为O(n^2),或者我们可以利用一个哈希表,快速查找S2中的元素。
使用Java时要注意这里不能用Scanner 读入 ,否则会超时。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.Buffer;
import java.util.*;
public class Main{
public static void main(String[]args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s1=br.readLine();
String s2=br.readLine();
StringBuilder sb=new StringBuilder();
int freq[]=new int[128];
for(char c:s2.toCharArray()){
freq[c]++;
}
for(int i=0;i<s1.length();i++){
if(freq[s1.charAt(i)]==0) sb.append(s1.charAt(i));
}
System.out.println(sb.toString());
}
}