我想用不重复的单词来计算令牌。
Example:
aabbcc
abc
Result:
0
3
我必须使用StrTokazizer或者像那样
答案 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
}
}