去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目要求
P1603題目鏈接
分析
我們不如直接獲取其平方數(shù),這個就要基于HashMap啦,提前指定一下初始長度!
像10啊,20啊這種模完只剩00的,就不要了吧(他說是要最小的結(jié)果,開頭0要去掉,那就顯然……)
需要一個sort()的過程,基于內(nèi)置函數(shù)就可以了!
遇到的兩次WA
第一次錯的莫名其妙……
獲取了測試數(shù)據(jù)2:
in
You are a three eight pig .out
10964始悟:最初的問題是沒考慮到"a"其實也是1,所以就被坑了一次。 (這誰想得到啊)
第二次錯在了set上
import java.util.*;public class Main {public static void main(String[] args) {Map<String, String> map = new HashMap<>(20);map.put("one", "01");map.put("a", "01");map.put("two", "04");map.put("three", "09");map.put("four", "16");map.put("five", "25");map.put("six", "36");map.put("seven", "49");map.put("eight", "64");map.put("nine", "81");//map.put("ten", "00");map.put("eleven", "21");map.put("twelve", "44");map.put("thirteen", "69");map.put("fourteen", "96");map.put("fifteen", "25");map.put("sixteen", "56");map.put("seventeen", "89");map.put("eighteen", "24");map.put("nineteen", "61");//map.put("twenty", "00");Set<String> set = new TreeSet<>();Scanner scanner = new Scanner(System.in);String[] words = scanner.nextLine().trim().split("\\s+");scanner.close();for (String s : words) {if (map.containsKey(s)) {set.add(map.get(s));}}if (set.isEmpty()) {System.out.println(0);}StringBuilder str = new StringBuilder();for (String s : set) {str.append(s);}String result = str.toString();if (result.startsWith("0")) {result = result.substring(1);}System.out.println(result);} }WA掉了第5個測試點,獲取了其數(shù)據(jù):
in
The a++ is a plus one .out
101始悟:set去重啊……(虧得我之前還專門用set給題目數(shù)據(jù)去重……)
那我們就用list然后sort()一下吧!
AC代碼(Java語言描述)
import java.util.*;public class Main {public static void main(String[] args) {Map<String, String> map = new HashMap<>(20);map.put("one", "01");map.put("a", "01");map.put("two", "04");map.put("three", "09");map.put("four", "16");map.put("five", "25");map.put("six", "36");map.put("seven", "49");map.put("eight", "64");map.put("nine", "81");map.put("eleven", "21");map.put("twelve", "44");map.put("thirteen", "69");map.put("fourteen", "96");map.put("fifteen", "25");map.put("sixteen", "56");map.put("seventeen", "89");map.put("eighteen", "24");map.put("nineteen", "61");List<String> list = new ArrayList<>();Scanner scanner = new Scanner(System.in);String[] words = scanner.nextLine().trim().split("\\s+");scanner.close();for (String s : words) {if (map.containsKey(s)) {list.add(map.get(s));}}if (list.isEmpty()) {System.out.println(0);}StringBuilder str = new StringBuilder();list.sort(Comparator.naturalOrder());for (String s : list) {str.append(s);}String result = str.toString();if (result.startsWith("0")) {result = result.substring(1);}System.out.println(result);} }總結(jié)
以上是生活随笔為你收集整理的去重的Set解不出“斯诺登的密码”(洛谷P1603题题解,Java语言描述)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【项目管理】变更管理与过程改进
- 下一篇: 【机器学习】机器学习中的缺失值及其填充处