我正在做一个编码程序,我应该删除出现两次的字符串中的每个字符。我试图遍历字符串,但是没有用。有谁知道如何做到这一点?谢谢。

public static String encodeScrambledAlphabet(String str)
{
    String newword = str;
    String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    newword += alphabet;

    newword = newword.toUpperCase();

    for (int i = 0, j = newword.length(); i < newword.length() && j >=0; i++,j--)
    {
        char one = newword.charAt(i);
        char two = newword.charAt(j);

        if (one == two)
        {
            newword = newword.replace(one, ' ');
        }



    }

    newword = newword.replaceAll(" ", "");

    return newword;
}

最佳答案

假设您只想保留字符的第一次出现,可以这样做:

boolean seen[65536];
StringBuilder res = new StringBuilder();
str = str.toUpperCase();
for (char c : str.toCharArray()) {
    if (!seen[c]) res.append(c);
    seen[c] = true;
}
return res.toString();


seen数组包含标志,每个字符一个,表示我们已经看到了此字符。如果您的字符都是ASCII,则可以将seen数组缩小为128

07-26 09:34