Eliminar letras duplicadas java

Déle una cadena, elimine las letras repetidas en la cadena para que cada letra aparezca solo una vez. Es necesario asegurarse de que el orden lexicográfico del resultado devuelto sea el más pequeño (necesario para no alterar la posición relativa de otros caracteres).

Nota: Esta pregunta es la misma que 1081 https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters

Ejemplo 1:

Entrada: s = "bcabc"
Salida: "abc"
Ejemplo 2:

Entrada: s = "cbacdcbc"
Salida: "acdb"

rápido:

1 <= s.length <= 104
s se compone de letras minúsculas en inglés

Fuente: LeetCode (LeetCode)
Enlace: https://leetcode-cn.com/problems/remove-duplicate-letters Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Idea: La idea de resolver el problema es realmente maravillosa.

class Solution {
    
    
    public String removeDuplicateLetters(String s) {
    
    
        boolean[] vis = new boolean[26];
        int[] num = new int[26];
        //先统计每个字符有多少个
        for (int i = 0; i < s.length(); i++) {
    
    
            num[s.charAt(i) - 'a']++;
        }

        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length(); i++) {
    
    
            char ch = s.charAt(i);
            if (!vis[ch - 'a']) {
    
    //每个字符只需要一个
                //头个字符直接加
                while (sb.length() > 0 && sb.charAt(sb.length() - 1) > ch) {
    
    
                    if (num[sb.charAt(sb.length() - 1) - 'a'] > 0) {
    
    //后面还有前面的字符就直接把他删了,这样后面再加进去就是递增了
                        vis[sb.charAt(sb.length() - 1) - 'a'] = false;
                        sb.deleteCharAt(sb.length() - 1);
                    } else {
    
    
                        break;
                    }
                }
                vis[ch - 'a'] = true;
                sb.append(ch);
            }
            num[ch - 'a'] -= 1;
        }
        return sb.toString();
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_43824233/article/details/111461181
Recomendado
Clasificación