-2

重複しない単語のトークンをカウントしたい。

Example:
aabbcc
abc

Result:
0
3

そのようなStrTokazizerまたはsthを使用する必要があります

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();
}

の文字列からすべての文字を収集し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 に答える