You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package class_2022_02_4_week;
// 来自微软
// 给定一个正数num要返回一个大于num的数并且每一位和相邻位的数字不能相等
// 返回达标的数字中,最小的那个
// 10^9
public class Code02_NearBiggerNoSameNeighbour {
public static int near(int num) {
// num = 174
// "0175"
// num = 899
// "0900"
// num = 999
// "01000"
char[] raw = ("0" + String.valueOf(num + 1)).toCharArray();
process(raw);
return Integer.valueOf(String.valueOf(raw));
}
public static void process(char[] raw) {
for (int i = 1; i < raw.length; i++) {
if (raw[i - 1] == raw[i]) {
addOne(raw, i);
for (int j = i + 1; j < raw.length; j++) {
raw[j] = '0';
}
process(raw);
return;
}
}
}
// 99.....
// +1
//100
public static void addOne(char[] r, int i) {
boolean up = true;
while (up && r[i] == '9') {
r[i--] = '0';
}
r[i]++;
}
public static void main(String[] args) {
char[] test = new char[] { '0', '1', '2', '3' };
System.out.println(Integer.valueOf(String.valueOf(test)));
int num1 = 55;
System.out.println(near(num1));
int num2 = 1765;
System.out.println(near(num2));
int num3 = 98;
System.out.println(near(num3));
int num4 = 44432;
System.out.println(near(num4));
int num5 = 3298;
System.out.println(near(num5));
int num6 = 9999998;
System.out.println(near(num6));
}
}