Javaテスト——文字列判定など


合計時間制限:1000 msメモリ制限:65536 kB
記述は、大文字と小文字の2つの文字列が大文字と小文字を無視し、スペースを無視した後に等しいかどうかを判断します.
1行に1つの文字列を含む2行を入力します.出力2文字列が等しい場合はYES、そうでない場合はNOを出力します.
サンプル入力
a A bb BB ccc CCC
Aa BBbb CCCccc

サンプル出力
YES

試験時ACコード

import java.util.Scanner;
public class Main {  
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        StringBuffer sb1=new StringBuffer();
        StringBuffer sb2=new StringBuffer();
        String str1=in.nextLine();
        String str2=in.nextLine();
        String[] s1=str1.split(" ");
        String[] s2=str2.split(" ");
        for(int i=0;i<s1.length;i++) {
            sb1.append(s1[i]);
        }
        String st1=sb1.toString();
        for(int i=0;i<s2.length;i++) {
            sb2.append(s2[i]);
        }
        String st2=sb2.toString();
        if(st1.equalsIgnoreCase(st2)==true)
            System.out.println("YES");
        else System.out.println("NO");
        in.close();
    }
}

機械試験の第1時間に思いついた基本構想は、元の文字列をsplitで分割し、StringBuffer内のappend法で文字列配列を第2の要素から第1の要素の後ろに接続してから単一の文字列に戻すことである.判断はequalsIgnoreCaseメソッドで大文字と小文字を無視します.テスト後、同級生と交流したところ、replaceAllの方法が簡単であることが分かった(AC):
import java.util.Scanner; 
public class Main { 
    public static void main(String[] args) { 
        Scanner in=new Scanner(System.in); 
        String s1=in.nextLine();
        String s2=in.nextLine();
        if(s1.replaceAll(" ","").equalsIgnoreCase(s2.replaceAll(" ","")))
            System.out.println("YES");
        else
            System.out.println("NO");
        in.close();
    } 
}

やはりよく使う種類のいろいろな方法を覚えていないようで、後で専門的に時間を探してもっと見なければなりません.