atcoder.jp charのループができるなんて全く知らずに苦戦しまくった
charのループ
intと同じで下記のようなことができる。
for(char ch ='a'; ch<='z'; ch++) { // }
もしa-zまでのchar型配列を作ることがあれば、下記は今後使用しそう。(a-zの並び方もちゃんと言えるか微妙だし笑)
char型arrayのユニーク値を取得するには
- 空のHashSetのSetを作ります。
- char型arrayの要素をHashSetに追加していきます。
- 出来上がったsetは元のchar型arrayでユニークなものです。
Set<Character> set = new HashSet<>(); for(Character c: charArray) { set.add(c); }
ちなみに
もしaddした順番を覚えたいなら、LinkedHashSet
を使用しましょう。
HashSet
だと順番は保証されません。
注意。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"); } }