java重复字母表的字符串

时间:2012-09-05 14:20:08

标签: java string

我是一个java菜鸟,我有特别的问题。 让我们考虑一个字符串,其中包含多个重复的字母:

String a="AAABBBAACCBBDD"

我已经使用forcharAt多次尝试过此操作。 预期产出:

"ABCD"

是否有任何内置函数用于此操作以及获取输出的任何想法?

3 个答案:

答案 0 :(得分:4)

您可以迭代字符串的字符以构建一组唯一字符:

String a = "AAABBBAACCBBDD";
Set<Character> charSet = new HashSet<String>();
for (char c : a.toCharArray())
{
    charSet.add(c);
}

然后,您可以将该集转换为列表并对其进行排序以显示/ toString()目的:

List<Character> uniqueCharList = new ArrayList<Character>(charSet);
Collections.sort(uniqueCharList);

// Convert List<Character> to char[]
// see http://stackoverflow.com/q/6649100/139010 for a more concise library call
char[] uniqueCharArray = new char[uniqueCharList.size()];
for (int i=0; i<uniqueCharArray.length; i++)
{
    uniqueCharArray[i] = uniqueCharList.get(i);
}

String result = new String(uniqueCharArray);

答案 1 :(得分:2)

我会做像

这样的事情
public static String dedup(String text) {
    Set<Character> seen = new LinkedHashSet<Character>();
    StringBuilder sb = new StringBuilder();
    for (char c : text.toCharArray())
        if (seen.add(c))
            sb.append(c);
    return sb.toString();
}

答案 2 :(得分:-2)

您不需要列表或设置为此。只是String来存储一切。我希望这没有错误。

String result = "";
for(int i = 0; i < a.length(); i++) 
    if(!result.contains(a[i])) {
           result += a[i];          
    }