2021年04月04日に参加
学習履歴詳細
Java 演習問題 2問目(最初の反復していない文字を取り出す)
問題
与えられた文字列から最初の反復していない文字を出力する。
答えの写経
与えられた文字列がASCIIの文字であれば、以下のコードでいけるらしい。mainメソッドを実行しても、想定結果("v")が出力されず、"a"が出力される。次回、デバッグしよう。
所感
コードの意味がわからない場合は、ChatGPTに教えてもらうことができる。これは勉強捗りそう。以下のコードでやりたいこと、意図していることは理解できたが、なぜ想定結果が出力されないのだろう。。
package S_2; //Finding the first non-repeated character: Write a program that returns the first non-repeated character from a given string. public class Main { private static final int EXTENDED_ASCII_CODES = 256; public static void main(String[] args) { String sample = "aaaaav"; char ch = Main.firstNonRepeatedCharacter(sample); System.out.println(ch); } public static char firstNonRepeatedCharacter(String str){ //Why is it 256?? int[] flags = new int[EXTENDED_ASCII_CODES]; for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (flags[ch] == -1) { flags[ch] = i; } else { flags[ch] = -2; } } int position = Integer.MAX_VALUE; for (int i = 0; i < EXTENDED_ASCII_CODES; i++) { if (flags[i] >= 0) { position = Math.min(position, flags[i]); } } return position == Integer.MAX_VALUE ? Character.MIN_VALUE : str.charAt(position); } }
Linux
Java
Git / GitHub
2023年06月05日(月)
1.3時間