題目描述

{1,2,3}是一個Set,但{1,2,2}不是。今天您將會學到如何使用Java的Set來解決問題。



您將會得到n個成對的字串。若a=c、b=d,則這兩對字串(a,b)和(c,d)是相同的。成對的字串有先後順序,所以(a,b)和(b,a)是不相同的。在將所有的成對字串輸入完之後,您必須輸出成對字串的不重複數量。

原題網址

https://www.hackerrank.com/challenges/java-hashset

輸入格式

第一行為一個整數T,表是成對字串的數量,範圍在1到100000之間(包含1和100000)。接下來的T行為一組成對字串,包含兩個字串,用空格分隔,每個字串的長度最多為5個字元,且都為小寫英文字母組成。

輸出格式

輸出T行,在第i行中,輸出您在處理第i個的成對字串後,目前算出的不重複成對字串數量。

範例輸入

5
john tom
john mary
john tom
mary anna
mary anna

範例輸出

1
2
2
3
3

額外解釋

處理完第1個成對字串後,目前有的不重複成對字串為:(john,tom),共1個。
處理完第2個成對字串後,目前有的不重複成對字串為:(john,tom)、(john, mary),共2個。
處理完第3個成對字串後,目前有的不重複成對字串為:(john,tom)、(john, mary),共2個,無變化。
處理完第4個成對字串後,目前有的不重複成對字串為:(john,tom)、(john, mary)、(mary, anna),共3個。
處理完第5個成對字串後,目前有的不重複成對字串為:(john,tom)、(john, mary)、(mary, anna),共3個,無變化。

解題概念

將成對字串「a b」以「a,b」的形式存入HashSet集合結構中,HashSet是一種Set,因此存在HashSet中的元素不會重複。

參考答案

import java.util.HashSet;
import java.util.Scanner;

public class Solution {

    public static void main(final String[] args) {

        final Scanner sc = new Scanner(System.in);
        final int n = sc.nextInt();
        final HashSet<String> hashSet = new HashSet<>();
        for (int i = 0; i < n; ++i) {
            final String a = sc.next();
            final String b = sc.next();
            hashSet.add(a.concat(",").concat(b));
            System.out.println(hashSet.size());
        }
        
    }
}