前提・実現したいこと
とある問題文を解いていて、
「キーボードのa-z全26種類にはそれぞれ耐久度があります。該当のキーを打つと、そのキーの耐久度が 1 減り、耐久度が 0 になると、そのキーは入力しても何も出力しないボタンになります。
各キーの耐久度が一行目に、入力した文章が二行目に与えられるので、ディスプレイに映された文字列を出力するプログラムを書いてください。」
という問題があり、下記ソースコードで正解はしたものの、Hashmapで全アルファベットを登録するのは冗長過ぎると思い、これを簡潔に出来ないかご教授戴きたいです。
(hashmapは使用しなくても大丈夫です。)
入力値
1 3 2 6 3 5 5 6 2 6 0 4 5 2 4 2 1 2 4 0 4 2 2 5 0 2
abcabcabcabc
出力結果
abcbcb
該当のソースコード
java
1 2import java.util.*; 3public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 7 HashMap<String, Integer>list = new HashMap<String, Integer>(); 8 list.put("a",sc.nextInt()); 9 list.put("b",sc.nextInt()); 10 list.put("c",sc.nextInt()); 11 list.put("d",sc.nextInt()); 12 list.put("e",sc.nextInt()); 13 list.put("f",sc.nextInt()); 14 list.put("g",sc.nextInt()); 15 list.put("h",sc.nextInt()); 16 list.put("i",sc.nextInt()); 17 list.put("j",sc.nextInt()); 18 list.put("k",sc.nextInt()); 19 list.put("l",sc.nextInt()); 20 list.put("m",sc.nextInt()); 21 list.put("n",sc.nextInt()); 22 list.put("o",sc.nextInt()); 23 list.put("p",sc.nextInt()); 24 list.put("q",sc.nextInt()); 25 list.put("r",sc.nextInt()); 26 list.put("s",sc.nextInt()); 27 list.put("t",sc.nextInt()); 28 list.put("u",sc.nextInt()); 29 list.put("v",sc.nextInt()); 30 list.put("w",sc.nextInt()); 31 list.put("x",sc.nextInt()); 32 list.put("y",sc.nextInt()); 33 list.put("z",sc.nextInt()); 34 35 String box[] = sc.next().split(""); 36 int c = 0; 37 38 for(int i = 0;i<box.length;i++){ 39 if(list.get(box[i])<=0){ 40 }else{ 41 System.out.print(box[i]); 42 c = list.get(box[i]); 43 list.replace(box[i],c-1); 44 } 45 } 46 } 47}
回答1件
あなたの回答
tips
プレビュー