2018/12/07 L1-033 出生年 Java

解题的方法的思想非常的巧妙, 使用set的特性: 即set容器内的元素不能重复, 用set容器的size()方法来判断输入的年份的4位上的值有几个是不同的. 巧妙的解决了问题.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

public class Main {

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");
        int y = Integer.parseInt(input[0]);
        int n = Integer.parseInt(input[1]);
        
        for(int i = y;; i++) {
            Set<Integer> set = new HashSet<Integer>();
            int num = i;
            for(int j=0; j<4; j++) {
                set.add(num % 10);  // set内的元素不重复.
                num /= 10;  // 算出每一位的数字的大小.
            }
            // 当set的大小等于n的时候
            if(set.size() == n) {
                System.out.printf("%d %04d", i-y, i);
                break;
            }
        }
    }
}
原文地址:https://www.cnblogs.com/huangZ-H/p/10083688.html