556. Next Greater Element III 发表于 2022-09-01 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253class Solution { public int nextGreaterElement(int n) { if (n < 10) { return -1; } char[] chars = String.valueOf(n).toCharArray(); int lowerIndex = -1; for (int i = chars.length - 1; i > 0; i--) { if (chars[i - 1] < chars[i]) { lowerIndex = i - 1; break; } } if (lowerIndex != -1) { for (int i = chars.length - 1; i > lowerIndex; i--) { if (chars[i] > chars[lowerIndex]) { swap(chars, i, lowerIndex); reverse(chars, lowerIndex + 1, chars.length - 1); break; } } } else { return -1; } int res = 0; for (char c : chars) { int num = c - '0'; if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && num > 7)) { return -1; } else { res = res * 10 + num; } } return res; } private void reverse(char[] chars, int i, int j) { while (i < j) { swap(chars, i++, j--); } } private void swap(char[] chars, int i, int j) { char tmp = chars[i]; chars[i] = chars[j]; chars[j] = tmp; }} Reference556. Next Greater Element III