题目描述:有两个字符
字符串1: welcome to cvte
字符串2: come
结果:wl t vt
要求删除字符串1中所包含的字符串2中的字符
即删除字符串1中所有的c o m. e 这四个字符
一:哈希表方法:
public static void main(String[] args) {
// 创建一个HashMap来存储第二个字符串的字符及其对应的索引位置
HashMap<Integer, Character> map = new HashMap<>();
// 第一个字符串
String str1 = "welcome to cvte";
// 第二个字符串
String str2 = "come";
// 将第二个字符串的字符及其索引位置存储到HashMap中
char[] chars = str2.toCharArray();
for (int i = 0; i < chars.length; i++) {
map.put(i + 1, chars[i]);
}
// 将第二个字符串中与第一个字符串相同的字符从第一个字符串中删除
char[] chars1 = str2.toCharArray();
for (int i = 0; i < chars1.length; i++) {
if (str1.contains(String.valueOf(chars1[i]))) {
str1 = str1.replace(String.valueOf(chars1[i]), "");
}
}
// 输出删除后的第一个字符串
System.out.println(str1);
}
这里顺便提一下String.valueOf()方法。
String.valueOf()
是一个静态方法,它用于将给定的参数转换为字符串表示形式。
String.valueOf()
可以接受多种类型的参数,包括基本数据类型,它的参数意义如下
-
- 如果传递给
String.valueOf()
的参数是基本数据类型(例如int
、float
、boolean
等),它将返回对应的字符串表示形式。 - 例如,
String.valueOf(10)
将返回字符串 "10"。
- 如果传递给
二:基本的列表方法
public static List<Character> func(String str1,String str2){
List<Character> list = new ArrayList<>();
for(int i=0;i < str1.length();i++){
char ch = str1.charAt(i);
if(!str2.contains(ch+"")){//在这里把character类型提升为string类型的数据。
list.add(ch);
}
}
return list;
}
public static void main(String[] args) {
String str1="welcome to cvte";
String str2="come";
List<Character> ret = func(str1,str2);
// System.out.println(ret);
for(char ch: ret){
System.out.print(ch);
}
}
最后的结果是: