公司面试题 java实现

AstroBiubiubiu 2015-09-14 09:53:31




谢谢大家,实在想不出来
...全文
263 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
解开者 2015-09-15
  • 打赏
  • 举报
回复
	String find(String data[]) {
		Map<String, Integer> map = new HashMap<String, Integer>();
		for (String s : data) {
			if (map.containsKey(s)) {
				map.put(s, map.get(s) + 1);
			} else {
				map.put(s, 1);
			}
		}
		String str = null;
		int t = 0;
		for (Map.Entry<String, Integer> entry : map.entrySet()) {
			if (t < entry.getValue()) {
				t = entry.getValue();
				str = entry.getKey();
			}
		}
		return str;
	}
火光闪耀 2015-09-15
  • 打赏
  • 举报
回复
两个for循环就差不多了
ArayChou 2015-09-15
  • 打赏
  • 举报
回复
这个题目没有那么简单,应为有要求效率尽可能的搞,不使用库函数/API,意味着String.equals(Object)方法都不能使用。 采用双循环的方法,初级程序员应该合格。面试高级职位估计不行。 效率高,有个方法就是使用HashMap,key为字符串,value为字符串的个数。当然自己实现一个简单的HashMap,Hash算法。不过这个在一天内应该搞不定了。估计自要能描述清楚思路就满分了(不用写代码)。
ArayChou 2015-09-15
  • 打赏
  • 举报
回复
笔试现场发帖求组? 自己完成吧,如过自己不会进入公司,对自己未必是一件好事
tony4geek 2015-09-15
  • 打赏
  • 举报
回复
参考list 的sort 方法吧。
initMrD 2015-09-15
  • 打赏
  • 举报
回复

public class findbook {


	public static void main(String[] args) {
		String []data={"paper","cup","book","cup","pen","book"};
		System.out.println(find(data));
	}
	static String find(String[] data){
		int k1=0;
		String temp = "";
		for(String s:data){			//比较数组自身
			int k=0;				//计数		
			for(String t:data){
				if(t.equals(s)){	//找到一次则计数+1
					k++;
				}
			}
			if(k>k1){				//若计数大于前一次计数则把该元素放入temp
				temp=s;
			}
		}
		return temp;				//返回次数最多的值
	}
}
新手试一下
qaedak 2015-09-14
  • 打赏
  • 举报
回复
新手一枚,试着写了一下,测试是成功的,方法有点笨,但是希望可以启发思维吧。 package com.test1; public class findBiggest { public static void main(String[] args) { String[] data=new String[]{"paper","cup","book","cup","pen","book"}; String A=find(data); System.out.println(A); } public static String find(String data[]){ int[] nums=new int[6];//分别对应data中元素的出现次数 for (int i = 0; i < nums.length; i++) { for (int j = 0; j < nums.length; j++) { if (data[i]==data[j]) {//两相同数组进行比较,相同则计数+1 nums[i]++; } } } int max=nums[0];//最大值 int index=0;//最大值的下标 for (int i = 1; i < nums.length; i++) {//寻找nums[]的最大数,即最大出现次数 if (max<nums[i]) { max=nums[i]; index=i; } } return data[index]; } }
qq_31311303 2015-09-14
  • 打赏
  • 举报
回复
我觉得可以用对比,从第一个开始对比,对比相同就count++最后看 哪个count最大
我初学者,代码还不会写……

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧