たいちっち

競技プログラミングをしています

【Java】ある文字列が、別の文字列の接頭辞かどうかのチェック(B - Prefix?)

解いた問題

AtCoderの「B - Prefix?」

提出した回答
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        String T = sc.next();
        sc.close();

        //SがTの接頭辞かチェック
        boolean flag = true;
        if (!(T.contains(S))) {
            //SがTに含まれない→接頭辞ではない
            flag = false;
        } else {
            //SがTに含まれる→接頭辞の可能性がある
            for (int i = 0; i < S.length(); i++) {
                if (S.charAt(i) != T.charAt(i)) {
                    flag = false;
                    break;
                }
            }
        }
        //判定
        if (flag) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
}

SがTに含まれるかをチェックしてから、Sの文字数分、SとTを1文字ずつ比較する方法を取った。

他の方の回答を見ているとStringクラスのindexOfメソッドを使用して

T.indexOf(S) == 0

と書かれているものがあった(AtCoderの回答へのリンク)。

 

indexOfは

indexOf(String str)
この文字列内で、指定された部分文字列が最初に出現する位置のインデックスを返します。

なので、最初に出現する位置が"0"ならば良いとする方法。勉強になった。

TODO
  • 他のA,B問題を解く
  • アルゴリズムの本を読む
  • タイミング合う回のコンテストに参加する

 

おわり。。