java 如何快速求一个字符串数组中出现最多次数的字符串?字符串数组存在大量重复.要最快速度.
2个回答
展开全部
这样就OK了,你试一下
class Test
{
public static void main(String[] args)
{
int max=1;
String[] strs={"a","b","f","a","d","c","e","d","a","d"};
for(int i=0;i<strs.length-1;i++)
{
int count=1;
for(int j=i+1;j<strs.length;j++)
{
if(strs[i].equals(strs[j]))
count++;
}
if(max<count)
max=count;
}
System.out.println("重复最多次数为:"+max);
for(int i=0;i<strs.length-1;i++)
{
int count=1;
for(int j=i+1;j<strs.length;j++)
{
if(strs[i].equals(strs[j]))
count++;
}
if(count==max)
System.out.println("重复最多次("+max+")的字符串为:"+strs[i]);
}
}
}
class Test
{
public static void main(String[] args)
{
int max=1;
String[] strs={"a","b","f","a","d","c","e","d","a","d"};
for(int i=0;i<strs.length-1;i++)
{
int count=1;
for(int j=i+1;j<strs.length;j++)
{
if(strs[i].equals(strs[j]))
count++;
}
if(max<count)
max=count;
}
System.out.println("重复最多次数为:"+max);
for(int i=0;i<strs.length-1;i++)
{
int count=1;
for(int j=i+1;j<strs.length;j++)
{
if(strs[i].equals(strs[j]))
count++;
}
if(count==max)
System.out.println("重复最多次("+max+")的字符串为:"+strs[i]);
}
}
}
更多追问追答
追问
有点复杂了. 我自己想了一个办法,你看行不行.我用hashmap存储这些字符串,如果发现重复就把value加1,说明这个词多出现了1次,然后添加2个标记,一个标记当前最大value,一个存储当前最大value对应的字符串. 一次遍历之后得到最大频率的字符串. 这样是不是效率些?
追答
关键是怎么判断重复,并且重复了多少次,都差不多
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static String[] arrayUnique(String[] a){
List<String> list = new LinkedList<String>();
for (int i = 0; i < a.length; i++) {
if(!list.contains(a[i])){
list.add(a[i]);
}
}
return (String[])list.toArray(new String[list.size()]);
}
List<String> list = new LinkedList<String>();
for (int i = 0; i < a.length; i++) {
if(!list.contains(a[i])){
list.add(a[i]);
}
}
return (String[])list.toArray(new String[list.size()]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询