本文共 965 字,大约阅读时间需要 3 分钟。
返回字符串 text 中按字典序排列最小的子序列,该子序列包含 text 中所有不同字符一次。
示例 1:
输入:“cdadabcc” 输出:“adbc”
示例 2:
输入:“abcd” 输出:“abcd”
示例 3:
输入:“ecbacba” 输出:“eacb”
示例 4:
输入:“leetcode” 输出:“letcod”
提示:
1 <= text.length <= 1000 text 由小写英文字母组成
class Solution { public String smallestSubsequence(String s) { // 统计最后出现的次数 int[] dict = new int[26]; // 转换数组 char[] arr = s.toCharArray(); // 开始统计 for(int i=0;istack = new Stack<>(); // 记录访问 boolean[] visited = new boolean[26]; // 开始 for(int i=0;i arr[i]&&dict[stack.peek()-'a']>i){ Character temp = stack.pop(); visited[temp-'a'] = false; } stack.push(arr[i]); visited[arr[i]-'a'] = true; } // 记录结果 StringBuilder res = new StringBuilder(); while(!stack.isEmpty()){ res.append(stack.pop()); } return res.reverse().toString(); }}
转载地址:http://vbwdf.baihongyu.com/