华为机试题02(2015)
2016-03-07 16:17
357 查看
网上搜了几道往年机试题。
1、求最大公约数
输入一组正整数(数量小于20),输出其最大公约数。
输入:121 33 44 11 1111
输出:11
第二题 相同子串
输入一个数字(最多15个),去掉连续次数大于等于三的数字,
如果去掉后仍有连续次数大于等于三的,继续进行同样的处理,直到结果中没有出现连续次数大于等于三的数字为止。
如果最终全部消除完了 输出“none”
输入:1 1 1 1 2 2 2 1 3 3 3 3 1 1 1
输出:none
3、第三题 单词计数
输入一段文章,输出最高频与次高频的单词(全部小写,逗号分隔)。
文章中仅出现空格,逗号和句号这三种分隔符。
不考虑频率一致的情况。忽略大小写。
输入:I am a student.I come from China.I love China.
输出: i,china
(这道题不考虑频率一致的情况不太理解,感觉正确解法不是这样的。。不过用例测试结果是对的)
1、求最大公约数
输入一组正整数(数量小于20),输出其最大公约数。
输入:121 33 44 11 1111
输出:11
import java.util.Scanner; public class Test2015No05 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); StringBuilder sb = new StringBuilder(input.nextLine()); String[] inputStrings = sb.toString().split(" "); findGcd(inputStrings,minStr(inputStrings)); input.close(); } private static int minStr(String[] strings){ int min = Integer.parseInt(strings[0]); for(String string : strings){ int num = Integer.parseInt(string); min = min > num ? num : min; } return min; } /* * 找到最小的数min,用其他的数除以min,如果不能整除就min--继续循环 */ private static void findGcd(String[] strs, int min){ if(min>1){ for(String string : strs){ if((Integer.parseInt(string))%min != 0){ findGcd(strs, --min); return; } } System.out.println(min); }else { System.out.println("没有最大公约数"); } } }
第二题 相同子串
输入一个数字(最多15个),去掉连续次数大于等于三的数字,
如果去掉后仍有连续次数大于等于三的,继续进行同样的处理,直到结果中没有出现连续次数大于等于三的数字为止。
如果最终全部消除完了 输出“none”
输入:1 1 1 1 2 2 2 1 3 3 3 3 1 1 1
输出:none
import java.util.Scanner; public class Test2015No06 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String inputString = input.nextLine(); deleteTriple(inputString.replaceAll(" ", "")); input.close(); } public static void deleteTriple(String str){ int i=0,j=1; int count=1; if(str.length()==0){ System.out.println("none"); } for(;i<str.length();i++){ for(;j<str.length();j++){ if(str.charAt(j)==str.charAt(i)){ count++; }else { if(count>=3){ deleteTriple(str.substring(0, i)+str.substring(j)); return; } count = 1; i=j; } } //最后一次还没比较 if(count>=3){ deleteTriple(str.substring(0, i)); return; } } System.out.println(str); } }
3、第三题 单词计数
输入一段文章,输出最高频与次高频的单词(全部小写,逗号分隔)。
文章中仅出现空格,逗号和句号这三种分隔符。
不考虑频率一致的情况。忽略大小写。
输入:I am a student.I come from China.I love China.
输出: i,china
(这道题不考虑频率一致的情况不太理解,感觉正确解法不是这样的。。不过用例测试结果是对的)
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Test2015No07 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String inputString = input.nextLine(); countWords(inputString); input.close(); } public static void countWords(String str){ /* * key-->字符串,value-->频率 */ String[] strings = str.toLowerCase().split(" |,|\\."); Map<String, Integer> map = new HashMap<String, Integer>(strings.length); for(int i=0;i<strings.length;i++){ Integer value = map.get(strings[i]); int count = 1; if(value!=null){ count = value+1; } map.put(strings[i], count); } TreeMap<Integer, String> treeMap = changeMap(map); // System.out.println(map); Integer lastKey = treeMap.lastKey(); StringBuilder sb = new StringBuilder(); sb.append(treeMap.remove(lastKey)); sb.append(","); sb.append(treeMap.get(treeMap.lastKey())); System.out.println(sb); } public static TreeMap<Integer,String> changeMap(Map<String, Integer> map){ Map<Integer, String> newMap = new HashMap<Integer, String>(map.size()); Iterator<Entry<String, Integer>> it = map.entrySet().iterator(); while(it.hasNext()){ Entry<String, Integer> en = it.next(); Integer value = en.getValue(); String key = en.getKey(); newMap.put(value, key); } TreeMap<Integer, String> resultTreeMap = new TreeMap<Integer, String>(newMap); return resultTreeMap; } }
相关文章推荐
- 三、服务器和客户端的信息函数
- dogwood
- openldap
- Uiautomator测试分享(一)
- Android Voip开发总结
- 用位运算实现两个整数的加减乘除
- tuleap开发
- debian安装无线网卡驱动
- Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
- Objects中如何查询与线相交的栅格
- 二分查找树转化为排序的循环双链表
- ExtJs6 Desktop Demo 修改测试
- Linux下解决./configure ,make,make install的报错
- 设置table的td宽度,不随文字变宽
- 最小二乘法
- spring项目中,post请求中文乱码
- 31. Next Permutation
- VMware-网络连接不成功问题
- pdo操作使用3
- JS原型和继承