Algorithm Description
- Given a positive integer, give the smallest integer after eliminating duplicate numbers. Note that long integers need to be considered.
- Input example: 423234
- Example output: 234
Algorithm implementation
public class FindMinString extends Sort{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); int[] src = {string.charAt(0) - '0'}; int[] dec = null; for(int i=0;i<string.length();i++){ int find = string.charAt(i) - '0'; int index = binarySearch(src, find,0, src.length - 1); if (index != -1) { System.out.println("index is :" + index + " value is :" + src[index]); continue; } else { dec = searchInsert(src, find); src = dec; } } printArray(src); } private static int[] searchInsert(int[] src, int i) { int left = 0; int right = src.length - 1; while (left <= right) { int middle = (right + left) / 2; if (src[middle] < i) { left = middle + 1; } else { right = middle - 1; } } int[] dec = Arrays.copyOf(src, src.length + 1); int decL = dec.length - 1; while (decL >= left) { if (decL == left) { dec[left] = i; break; } dec[decL] = dec[decL - 1]; decL--; } return dec; } private static int binarySearch(int[] src, int i, int left, int right) { while (left <= right) { int middle = (right + left) / 2; if (src[middle] == i) { return middle; } else if (src[middle] < i) { left = middle + 1; } else { right = middle - 1; } } return -1; } }