題目描述

給定A、B兩個字串,找出同時出現在這兩個字串中的子字串。



原題網址

https://www.hackerrank.com/challenges/two-strings

輸入格式

第一行為一個整數T,表示有幾組測試資料,範圍在1到10之間(包含1和10)。接下來的2T行,每兩行是一組測試資料。兩行中的第一行是字串A,而第二行則是字串B,兩個字串的長度在1到100000之間(包含1和100000),字元皆是小寫英文字母。

輸出格式

分行輸出每組測試的結果,如果在A、B兩個字串中能找出同時出現的子字串,輸出「YES」,否則輸出「NO」。

範例輸入

2
hello
world
hi
world

範例輸出

YES
NO

額外解釋

第一組測試中,可以在「hello」和「world」找到共同的子字串「l」。

第二組測試中,無法找到共同的子字串。

解題概念

這題其實可以很簡單的簡化成「A、B兩字串是否擁有同樣的字元」,如果有的話就輸出「YES」,沒有的話就輸出「NO」。由於輸入字串的字元都是小寫英文字母,因此可以從字元「a」到「z」並配合使用字串物件的「indexOf」方法來判斷兩字串是否擁有相同的字元。

參考答案

import java.util.Scanner;

public class Solution {

    public static void main(final String[] args) {
        final Scanner sc = new Scanner(System.in);

        int testCase = Integer.parseInt(sc.nextLine());
        while (testCase-- > 0) {
            final String A = sc.nextLine();
            final String B = sc.nextLine();

            char c;
            for (c = 'a'; c <= 'z'; ++c) {
                if (A.indexOf(c) > -1 && B.indexOf(c) > -1) {
                    break;
                }
            }
            System.out.println(c <= 'z' ? "YES" : "NO");
        }
    }
}