如何计算不重复java的单词中的标记

时间:2012-12-29 10:09:23

标签: regex string stringtokenizer

我想用不重复的单词来计算令牌。

Example:
aabbcc
abc

Result:
0
3

我必须使用StrTokazizer或者像那样

2 个答案:

答案 0 :(得分: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();
}

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

这取决于如果要添加的元素已经存在,Set的{​​{1}}操作将返回.add()这一事实。

答案 1 :(得分: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
  }
}