HW代碼題—全量字符集和已佔用字符集

題目:有兩個字符集,一個是全量字符集一個是已佔用字符集,輸出全量字符集中剩餘的字符集。

思路:代碼是大神們寫的,先放在這裏。其實整體的思路是挺簡單的,使用一個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));
        }

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章