1. 编程题
2.1 69390-删除公共字符
-
解题思路
1.用哈希的思想
2.先遍历 str2 这个字符串,把对应的字符放到 hash[ ] 中,放进去记为1.
3.再遍历 str1 找到 == 0 的字符就是我们需要的字符。若为1,则说明它在 str2 中出现过了。 -
解题代码
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();//nextLine 才能读一行
String str2 = scanner.nextLine();
HashMap<Character,Integer> map = new HashMap<>();
//1.遍历第二个字符串
for (int i = 0; i < str2.length(); i++) {
//当前拿到的字符判断 之前是否存在于 map 中
if (map.get(str2.charAt(i) )== null) {//注意这里不要写成 == 0.否则会报空指针异常
map.put(str2.charAt(i),1);
} else {
map.put(str2.charAt(i),map.get(str2.charAt(i))+1);
}
}
String ret = "";
//2.遍历第一个字符串
for (int i = 0; i < str1.length(); i++) {
if (map.get(str1.charAt(i))==null){//注意这里不要写成 == 0.否则会报空指针异常
ret += str1.charAt(i);
}
}
System.out.println(ret);
}
}
2.2100449-组队竞赛
-
解题思路
-
代码
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int n = scanner.nextInt();
int[] array = new int[ 3 * n];//样例中, N 为 2 时,数组长度为 6。
long sum = 0;//long 是 8 个字节
for (int i = 0; i < array.length; i ++) {
array[i] = scanner.nextInt();
}
Arrays.sort(array);
for (int i = 0; i < n; i++) {
sum += array[array.length - 2*(i+1)];
}
System.out.println(sum);
}
}
}