定義一個方法,給出一個正整數n,返回比該數大,且具備相同的數字的整數,示例:java
Kata.nextBiggerNumber(12)==21 Kata.nextBiggerNumber(513)==531 Kata.nextBiggerNumber(2017)==2071
若是沒有比給定的數大的話,則返回-1,示例:git
Kata.nextBiggerNumber(9)==-1 Kata.nextBiggerNumber(111)==-1 Kata.nextBiggerNumber(531)==-1
public class Kata { private static long bigger(long num) { char[] cs = String.valueOf(num).toCharArray(); for (int i = 0; i < cs.length; i++) { for (int j = 0; j < i; j++) { if (cs[j] < cs[i]) { char tmp = cs[i]; cs[i] = cs[j]; cs[j] = tmp; } } } return Long.parseLong(String.valueOf(cs)); } public static long nextBiggerNumber(long n) { if (n <= 10) { return -1; } long bigNum = bigger(n); if (n == bigNum) { return -1; } long i = n; while (i < bigNum) { if (bigger(i) == bigNum && i > n) { return i; } i++; } return -1; } }
題目來源:http://www.codewars.com/kata/next-smaller-number-with-the-same-digitscode