https://leetcode.com/problems/remove-duplicate-letters/
遍历字符串,记录当前最小的char位置pos,同时check当前char是否为字符串中该char的最后一个。如果是的话就跳出循环。然后递归s.substring(pos + 1)同时去除substring之中的所有s.charAt(pos)
public class Solution {
public String removeDuplicateLetters(String s) {
if (s == null || s.length() == 0) {
return s;
}
int[] count = new int[26];
int pos = 0;
for (int i = 0; i < s.length(); i++) {
count[s.charAt(i) - 'a']++;
}
for (int i = 0; i < s.length(); i++) {
if (s.charAt(pos) > s.charAt(i)) {
pos = i;
}
if (--count[s.charAt(i) - 'a'] == 0) {
break;
}
}
return s.charAt(pos) + removeDuplicateLetters(s.substring(pos + 1).replaceAll("" + s.charAt(pos), ""));
}
}