重複しない単語のトークンをカウントしたい。
Example:
aabbcc
abc
Result:
0
3
そのようなStrTokazizerまたはsthを使用する必要があります
重複しない単語のトークンをカウントしたい。
Example:
aabbcc
abc
Result:
0
3
そのようなStrTokazizerまたはsthを使用する必要があります
これはうまくいきます:
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
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
}
}