題目:有兩個字符集,一個是全量字符集一個是已佔用字符集,輸出全量字符集中剩餘的字符集。
思路:代碼是大神們寫的,先放在這裏。其實整體的思路是挺簡單的,使用一個HashMap存儲字符集中各個字符以及它們的個數,然後減去已佔用字符集中存在的字符和個數。比較麻煩的是要自己處理輸入輸出,並且有很多字符串之間的轉換。這兩部分比較麻煩。
首先要注意引入包,一般io,util包都是常用的,記住要寫。使用BufferedReader是由固定寫法的,這個要記着。
代碼:
import java.io.*; import java.util.*; public class hw1 { public static void main(String[]args)throws Exception{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String[] arr=br.readLine().split("@"); String[] a=arr[0].split(",");//這個是全量字符集 HashMap<Character,Integer> hm=new HashMap<>();//這個都是包裝類,不能是基本數據類型 ArrayList<Character> list=new ArrayList<>(); for(int i=0;i<a.length;i++){ String[] c=a[i].split(":"); char v=c[0].charAt(0);//將字符串轉化爲字符 int n=Integer.parseInt(c[1]);//將字符串轉化爲整數 hm.put(v,n); list.add(v); } if(arr.length>1){//這個說明既有全量字符集又有已佔用字符集 String[] b=arr[1].split(","); for(int i=0;i<b.length;i++){ String []d=b[i].split(":"); char v=d[0].charAt(0);//charAt() 方法用於返回指定索引處的字符 int n=Integer.parseInt(d[1]); hm.put(v,hm.get(v)-n); } } ArrayList<String>list2=new ArrayList<>(); for(int i=0;i<list.size();i++){ char h=list.get(i); String x=""; if(hm.get(h)>0){ x=h+":"+hm.get(h); list2.add(x); } } //這部分是在寫輸出的模式 if(list2.size()>0){ for(int i=0;i<list2.size()-1;i++){ System.out.print(list2.get(i)+","); } System.out.print(list2.get(list2.size()-1)); } } }