Java 计数字符串匹配数给出错误结果
我想计算列表中的字符串匹配数: 我的ArrayList包含:Java 计数字符串匹配数给出错误结果,java,string,count,string-matching,Java,String,Count,String Matching,我想计算列表中的字符串匹配数: 我的ArrayList包含: recognise product product process process process principle partner particular 因此,输出应为: recognise 1 product 2 process 3 principle 1 partner 1 particular 1 我的代码是: List<String> mylist=new LinkedList<String>(
recognise
product
product
process
process
process
principle
partner
particular
因此,输出应为:
recognise 1
product 2
process 3
principle 1
partner 1
particular 1
我的代码是:
List<String> mylist=new LinkedList<String>();
HashMap<String, Integer> result= new LinkedHashMap<String, Integer>();
for (int i = 0; i < wordlist.size(); i++) {
mylist.add(wordlist.get(i)); //wordlist contains the above mentioned items
}
Collections.sort(mylist);
Collections.reverse(mylist);
String small="";
int c=0;
for(int i=0;i<mylist.size();i++)
{
c+=1;
small=mylist.get(i);
for(int j=i;j<mylist.size();j++)
{
if(small.contains(mylist.get(j)))
{
small=mylist.get(j);
}
}
if (!result.containsKey(small) || result.get(small) < c){
result.put(small, c);
c=0;
}
}
for (String key : result.keySet()){
System.out.println(key + ": " + result.get(key));
}
如果您只想计算列表中每个字符串的出现次数,那么这就足够了:
for(String s : mylist) {
if(result.containsKey(s)) {
result.put(s, result.get(s) + 1);
} else {
result.put(s, 1);
}
}
无需对我的列表进行排序/反转/etc
要对计数进行排序,只需通过提供一个比较器使用a即可。我在这方面没有经验,因此您最好自己查找API。在^2*length\u max上,您的算法的时间复杂度似乎很高。 但是,您可以在ON中执行此操作,其中N=通过, 其中,每个节点包含一个整数i,该整数表示字符串在该节点结束的次数,以及char ch 算法: 当遍历字符串时,如果它不在trie中,则将其插入trie中,否则向下遍历trie,当字符串结束时,do i=i+1,在此处标记另一个字符串结束
请参阅:请求帮助时,请花时间将代码格式化/缩进,使其易于阅读。
struct node
{
int i;
char ch;
}