删除公共字符——牛客笔试题
题目描述
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
输入描述:
每个测试输入包含2个字符串
输出描述:
输出删除后的字符串
示例
输入:
They are students.
aeiou
输出:
Thy r stdnts.
核心思路:
1. 使用HashMap记录第二个字符串str2中每个字符出现的次数并保存起来,
2. 在遍历第一个字符串str1时,如果发现该字符在HashMap中不存在,就可以将该字符加入到结果字符串ret中。
代码
import java.util.*;
public class delete_Public_Character {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
//遍历第二个字符串str2,使用HashMap记录str2中每个字符及其出现的次数
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < str2.length(); i++) {
if (map.get(str2.charAt(i)) == null) {
map.put(str2.charAt(i), 1);
} else {
map.put(str2.charAt(i), map.get(str2.charAt(i)) + 1);
}
}
//定义结果字符串ret
String ret = "";
//遍历第一个字符串str1,将不在HashMap中的字符加入ret结果字符串中
for (int j = 0; j < str1.length(); j++) {
if (map.get(str1.charAt(j)) == null) {
ret += str1.charAt(j);
}
}
//输出结果字符串
System.out.println(ret);
}
}