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