題目描述
{1,2,3}是一個Set,但{1,2,2}不是。今天您將會學到如何使用Java的Set來解決問題。
您將會得到n個成對的字串。若a=c、b=d,則這兩對字串(a,b)和(c,d)是相同的。成對的字串有先後順序,所以(a,b)和(b,a)是不相同的。在將所有的成對字串輸入完之後,您必須輸出成對字串的不重複數量。
原題網址
輸入格式
第一行為一個整數T,表是成對字串的數量,範圍在1到100000之間(包含1和100000)。接下來的T行為一組成對字串,包含兩個字串,用空格分隔,每個字串的長度最多為5個字元,且都為小寫英文字母組成。
輸出格式
輸出T行,在第i行中,輸出您在處理第i個的成對字串後,目前算出的不重複成對字串數量。
範例輸入
5
john tom
john mary
john tom
mary anna
mary anna
john tom
john mary
john tom
mary anna
mary anna
範例輸出
1
2
2
3
3
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());
}
}
}