' P '

whatever I will forget

Java charのループとchar型arrayのユニーク値の取得方法

atcoder.jp charのループができるなんて全く知らずに苦戦しまくった

charのループ

intと同じで下記のようなことができる。

for(char ch ='a'; ch<='z'; ch++) {
//
}

もしa-zまでのchar型配列を作ることがあれば、下記は今後使用しそう。(a-zの並び方もちゃんと言えるか微妙だし笑)

inarizuuuushi.hatenablog.com

char型arrayのユニーク値を取得するには

  1. 空のHashSetのSetを作ります。
  2. char型arrayの要素をHashSetに追加していきます。
  3. 出来上がったsetは元のchar型arrayでユニークなものです。
Set<Character> set = new HashSet<>();
for(Character c: charArray) {
  set.add(c);
}

ちなみに

もしaddした順番を覚えたいなら、LinkedHashSetを使用しましょう。
HashSetだと順番は保証されません。

www.baeldung.com

java-study.blog.jp

注意。SetとListについて

いきなりSetという概念が出てきたので少しググった情報を。
Setはリストと同じようなもの。でも
- Set (重複を許さない、リスト値の取得(get)が使えない)
- List (重複を許す)
こんな感じでとりあえず理解。
getが使えないので、一旦ArrayListなどに変換する必要があります。

サンプル

import java.util.*;

public class Main40 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] array = sc.nextLine().toCharArray();

        Set<Character> list = new HashSet<>();
        for(Character c: array) {
            list.add(c);
        }

        for(char ch='a'; ch<='z'; ch++) {
            if(!list.contains(ch)) {
                System.out.println(ch);
                System.exit(0);
            }
        }
        System.out.println("None");
    }
}