题目描述
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
输入:
They are students.
aeiou
输出:
Thy r stdnts.
以下是本篇文章正文内容,下面案例可供参考
解题思路
先将输入的第一行字符串放进字符数组中,和第二行字符串进行比较,将不相等的输出,即删除了相等的字符
代码如下
方法一:
import java.util.Scanner;
public class Main2 {
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str1 = sc.nextLine();
String str2 = sc.nextLine();
func(str1,str2);
}
}
public static void func(String str1,String str2){
char[] array = str1.toCharArray();//将str1放进字符串数组中
for(int i = 0;i<array.length;i++){
String ch = array[i]+"";
if(!str2.contains(ch)){//str2若与其不相等,输出
System.out.print(ch);
}
}
}
}
方法二:
(Hash Map)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<Character,Integer> map = new HashMap<>();
while(sc.hasNext()){
String str1 = sc.nextLine();
String str2 = sc.nextLine();
for (int i = 0; i < str2.length(); i++) {
if (map.get(str2.charAt(i))==null){
//走到这,表示还没有放这个
map.put(str2.charAt(i),1);//第一次放,出现了一次
}else{
//走到这,表示放过了,给value值+1
map.put(str2.charAt(i),map.get(str2.charAt(i))+1);//在原有基础上+1
}
}
StringBuffer str = new StringBuffer();
for (int i = 0; i < str1.length(); i++) {
if(map.get(str1.charAt(i))==null){
str.append(str1.charAt(i));
}
}
System.out.println(str.toString());
}
}
总结
注意:String ch = array[i]+"";
这行代码+""
表示将字符数组写成字符串的形式!
如果本文对你有所帮助,要记得点赞评论哦~
若是有描述不准确的地方,欢迎大家评论区指正,一起学习~