私は次のような単純な問題をコーディングしようとしていました:
今週は、部門全体の重要な会議があります。あなたは上司がそれについてあなたに話したことをはっきりと覚えています。忘れてしまったのは、会議が行われる曜日だけです。
あなたは6人の同僚に会議について尋ねました。誰もそれが起こる日を知りませんでした、しかし彼らのそれぞれはそれが起こらない日を覚えていました。彼らが覚えていた日ははっきりしていた。あなたのような賢いプログラマーにとって、これは会議の日を決定するのに十分でした。
これで、2つの配列を作成しました。1つはすべての平日を含み、もう1つは会議が行われないすべての日を含み、それらから2つのリストを作成しました。
public static void main(String[] args) {
String[] notOnThisDay={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
String[] weekdays={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
List<String> list1=Arrays.asList(weekdays);
List<String> list2=Arrays.asList(notOnThisDay);
Iterator<String> iter=list1.iterator();
while(iter.hasNext()) {
if(list2.contains(iter.next())) {
iter.remove();
}
}
for(String x:list1) {
System.out.println(x);
}
}
私の戦略は、平日リストをトラバースnotonThisDay
することでした。リストに含まれている日が見つかった場合は、それを削除します。そのため、会議の当日は残っていますが、iter.remove()
方法に問題があるようです。
エラーを指摘してください。そして、私のアルゴリズムが良ければアドバイスをください。もしあれば、より良いアルゴリズムの提案を受け入れます。