andy6804tw
7/20/2016 - 3:26 AM

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=1623 這題判斷好數,先存入字串中判斷長度若大於4就Failure Imput 好數的判斷就是把四個數拆開放入num[10]的陣列中分別為0~9以索引值

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=1623

這題判斷好數,先存入字串中判斷長度若大於4就Failure Imput 好數的判斷就是把四個數拆開放入num[10]的陣列中分別為0~9以索引值當作數字內容存次數 1122,3113這些數字也包含在測資中他也不是好數所以建立temp儲存第2多的數 若輸入1122 =>max=2 temp=2(2==2)就是上述的狀態 若輸入1213 =>max=2 temp=1 就是好數

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		int n = scn.nextInt();
		while (n-- != 0) {
			String str = scn.next();
			char c[] = str.toCharArray();//存入字串並拆開成字元陣列
			if (c.length != 4)//若長度不等於4就是Failure Input
				System.out.println("Failure Input");
			else {
				int num[] = new int[10], max = 0, temp = 0; //判斷好數
				for (int i = 0; i < 4; i++)//num[10]的陣列中分別為0~9以索引值當作數字內容存次數
					num[c[i] - '0']++;
				for (int i = 0; i < 10; i++)//num全部檢查次數
					if (num[i] >= max) {
						temp = max;//若num[i] == max temp儲存第二大的個數 max儲存num[i]
						max = num[i];
					}
				if (max == 2 && (max != temp))//判斷是否第一和第二數量是否一樣 ex:1122,1221 1和2的個數都是2個
					System.out.println("Yes");
				else
					System.out.println("No");
			}
		}
	}
		/* 
    題目:[C_AR59-易] 好數問題
    作者:1010
    時間:西元 2016 年 7 月 */
}