-2

我想计算 word 中不重复的标记。

Example:
aabbcc
abc

Result:
0
3

我必须使用 StrTokazizer 或类似的东西

4

2 回答 2

1

这将起作用:

public int getUniqueTokensCount(String input)
{
    Set<Character> set = new HashSet<Character>();
    Set<Character> dups = new HashSet<Character>();

    for (char c: input.toCharArray())
        if (!set.add(c))
            dups.add(c);

    set.removeAll(dups);
    return set.size();
}

我们从 in 的字符串中收集所有字符set,如果是重复的,则将字符添加到dups. 解析完所有字符串后,我们从set(包含所有单个字符)中删除所有找到的重复项。唯一令牌的数量就是这个集合的大小。

这取决于如果要添加的元素已经存在,则 aSet.add()操作将返回这一事实。false

于 2012-12-29T10:34:43.617 回答
1

如果您使用的是 Java,则以下内容应该可以工作:

public class UniqueTokenCounter{
  public static void main(String[] args) 
  {
    Arraylist<String> tokens = new ArrayList<String>();

    int uniqueCount=0;

    StringTokenizer stringTokenizer = new StringTokenizer("a b c b d");

    while(stringTokenizer.hasMoreTokens())
    {
       tokens.add(stringTokenizer.nextToken())
    }

    boolean unique=true;
    for(String uniqueToken : tokens) 
    {
       for(String token : tokens) 
       {
          if(uniqueToken.equals(token))
            unique=false;
       }
       if(unique)
          uniqueCount++;
       else
          unique=true;
    }
    //print uniqueCount
  }
}
于 2012-12-29T10:49:36.673 回答