Last Substring in Lexicographical Order LeetCode solution in Java
1class Solution {23public String lastSubstring(String s) {4int maxIndex = s.length() - 1;56for (int currIndex = s.length() - 1; currIndex >= 0; currIndex--) {7if (s.charAt(currIndex) > s.charAt(maxIndex)) maxIndex = currIndex;8else if (s.charAt(currIndex) == s.charAt(maxIndex)) {9int i = currIndex + 1;10int j = maxIndex + 1;1112while (i < maxIndex && j < s.length() && s.charAt(i) == s.charAt(j)) {13i++;14j++;15}1617if (i == maxIndex || j == s.length() || s.charAt(i) > s.charAt(j)) maxIndex = currIndex;18}19}2021return s.substring(maxIndex);22}23}