題目描述
給定A、B兩個字串,找出同時出現在這兩個字串中的子字串。
原題網址
輸入格式
第一行為一個整數T,表示有幾組測試資料,範圍在1到10之間(包含1和10)。接下來的2T行,每兩行是一組測試資料。兩行中的第一行是字串A,而第二行則是字串B,兩個字串的長度在1到100000之間(包含1和100000),字元皆是小寫英文字母。
輸出格式
分行輸出每組測試的結果,如果在A、B兩個字串中能找出同時出現的子字串,輸出「YES」,否則輸出「NO」。
範例輸入
2
hello
world
hi
world
hello
world
hi
world
範例輸出
YES
NO
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");
}
}
}