华为OD机试 2023B卷题库疯狂收录中,刷题点这里
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
给定两个字符串,从字符串2中找出字符串1中的所有字符,去重并按照ASCII值从小到大排序。
输入字符串1:长度不超过1024
输入字符串2:长度不超过1000000
字符范围满足ASCII编码要求,按照ASCII的值由小到大排序。
bach
bbaaccedfg
abc
输入字符串1 为给定字符串bach,输入字符串2 bbaaccedfg
从字符串2中找出字符串1的字符,去除重复的字符,并且按照ASCII值从小到大排序,得到输出的结果为abc。
字符串1中的字符h在字符串2中找不到不输出。
根据题意:
从字符串2中找出字符串1中的所有字符,去重并按照ASCII值从小到大排序。
核心思想:
package com.guor.od;
import java.util.*;
public class OdTest01 {
/**
* 从字符串2中找出字符串1中的所有字符,去重并按照ASCII值从小到大排序
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String str2 = scanner.nextLine();
// 通过Set去重
Set<Character> set1 = new HashSet<>();
for (char c : str1.toCharArray()) {
set1.add(c);
}
Set<Character> set2 = new HashSet<>();
for (char c : str2.toCharArray()) {
set2.add(c);
}
// 字符串1在字符串2中存在的字符集合
List<Character> list = new ArrayList<Character>();
// 遍历set1,看它是否在set2中存在,
for (char c : set1) {
// 如果存在,则加入list
if (set2.contains(c)) {
list.add(c);
}
}
// 按照ASCII值从小到大排序
list.sort(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
if (o1 < o2) {
return -1;
} else if (o1 > o2) {
return 1;
} else {
return 0;
}
}
});
// 去重并按照ASCII值从小到大排序输出
for (Character c : list) {
System.out.print(c);
}
}
}
nezha
nezhaloveslearningjava
aehnz
下一篇:华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】
本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。