华为校园招聘上机试题 Java实现(一)
2014-03-11 10:43
387 查看
掌握scanner类
华为校招时会考上机题目,如果用Java语言,关于输入输出,注意掌握Scanner类。举例:package study.edu.main; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; public class Main { /** * 示例输入:di yi hang 回车 number 1 回车 di san hang 回车 */ public static void main(String[] args) throws Exception { Scanner in = new Scanner(System.in); String a = in.nextLine(); // 按行读取,可读取带空格的字符串,回车表示输入 System.out.println(a); String b = in.next(); System.out.println(b); // 空格被作为间隔,读取一个字符串 System.out.println(in.nextInt()); BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); // 可以读取带空格的字符串 System.out.println(bf.readLine()); } }
最具夫妻相
在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是“夫妻相”。所谓“夫妻相”,就是两个人看上去比较般配,长相、身材等某些方面有一定的相似度。本题则另辟蹊径,从人的姓名维度,以字母重复个数来寻找最具“夫妻相”的人。题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。规则1:如果字母重复数最多的女士有多位相同,则以最先匹配的女士做为最具“夫妻相”的人选。
规则2:人名中的相同字母,按重复一次处理。例如:li ling 与li lei 重复的字符个数为2,而不是4。
预置女士名单(先后循序必须保证): "wang fei","zhang man yu","zhang zhi yi","li li","li xiao man","li yu cun","yang ni","xiao tong","li lei","zhang san"
输入: 输入一个男士姓名,字符串 ,输出: 输出最具“夫妻相”的女士姓名
package study.edu.main; import java.util.LinkedHashSet; import java.util.Iterator; import java.util.Scanner; import java.util.Set; public class Main { public static String[] girls = { "wang fei", "zhang man yu", "zhang zhi yi", "li li", "li xiao man", "li yu cun", "yang ni", "xiao tong", "li lei", "zhang san" }; public static void main(String[] args) throws Exception { String man; @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); man = scan.nextLine(); // 可以读取带空格的字符串,回车时读取 String matchGril; matchGril = match(man); System.out.println(matchGril); } /** * 返回最佳匹配的女孩,从girls数组里 */ private static String match(String str) { str = removeRepeatChar(str); int num = 0; String woman = null; int index = 0; int tempNum = 0; for (int i = 0; i < girls.length; i++) { woman = removeRepeatChar(girls[i]); tempNum = match(str, woman); if (tempNum > num) { num = tempNum; index = i; } } return girls[index]; } /** * 匹配字符串相同字母个数 */ private static int match(String man, String woman) { char[] men = man.toCharArray(); char[] women = woman.toCharArray(); int count = 0; for (char mm : men) { for (char ww : women) { if (mm == ww) { count++; } } } return count; } /** * 去除重复的字符串,使用Set集合 */ private static String removeRepeatChar(String man) { char[] chs = man.toCharArray(); Set<Character> chsSet = new LinkedHashSet<Character>(); //保持插入顺序 for (char ch : chs) { if (ch > 'a' && ch < 'z') { chsSet.add(ch); } } Iterator<Character> it = chsSet.iterator(); String str = ""; while (it.hasNext()) { str += it.next().toString(); } return str; } }
统计字符串中各字母出现的次数
统计字符串中各字母出现的次数,并按照规定格式和 自然顺序 输出给定字符串。如:输入"asdfdfdassssddf" ,输出:a:2 d:5 f:3 s:5package study.edu.main; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class MainMap { public static void main(String[] args) { String a = "asdfdfdassssddf"; String str = check(a); System.out.println(str); } private static String check(String a) { Map<Character, Integer> me = new TreeMap<Character, Integer>(); // TreeMap 有序, 统计字母的出现顺序,并按照规定顺序格式输出 //如果不要求排序,按照原来的插入顺序,则使用LinkedHashMap char[] chs = a.toCharArray(); int count = 0; //核心业务逻辑 for (int i = 0; i < chs.length; i++) { Integer value = me.get(chs[i]); // 当map中没有key时,get(key)会返回null if (value != null) count = value; count++; me.put(chs[i], count); count = 0; } StringBuilder stringBuilder = new StringBuilder(); Set<Character> se = me.keySet(); Iterator<Character> it = se.iterator(); while(it.hasNext()){ Character ch = it.next(); Integer in = me.get(ch); stringBuilder.append(ch+":"+in+" "); } return stringBuilder.toString(); } }
显示电池电量
手机电池余量的问题,描述: 自从有了智能手机,时刻都要关心手机的电量。你的任务很简单,用程序打印符号来表示当前手机的电量,用10行和10列来表示电池的电量,同时在外围加上边框,每一行表示10%的电量,假设还有60%的电量,则显示如下:+----------+
|----------|
|----------|
|----------|
|----------|
|++++++++++|
|++++++++++|
|++++++++++|
|++++++++++|
|++++++++++|
|++++++++++|
+----------+
输入:多组测试数据,第一行为测试数据组数N(N<10),紧接着是N行,每行一个数,表示电量,这个数值可能是0,10,20 ,30,40,50,60,70,80,90,100
输出:输出: 每组数据输出一个电池的电量,每组数据之间用15个“=”隔开
样例输入:2 回车 50 回车 0
代码:
package study.edu.main; import java.util.Scanner; public class Main { public static void main(String[] args) { int n; @SuppressWarnings("resource") Scanner scan = new Scanner(System.in); n = scan.nextInt(); int[] intArray = new int ; for (int i = 0; i < n; i++) { intArray[i] = scan.nextInt(); } print(intArray, n); } private static void print(int[] intArray, int n) { String str1 = "+----------+"; String str2 = "|----------|"; String str3 = "|++++++++++|"; String str4 = "==============="; for (int i = 0; i < n; i++) { int power = intArray[i] / 10; System.out.println(str1); for (int j = 0; j < 10 - power; j++) { System.out.println(str2); } for (int k = 0; k < power; k++) { System.out.println(str3); } System.out.println(str1); if (i < n - 1) System.out.println(str4); } } }
字符串压缩程序
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:
1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.next(); String re = process(string); System.out.println(re); scanner.close(); } private static String process(String string) { StringBuilder sb = new StringBuilder(); char[] a = string.toCharArray(); int count = 1; char t = a[0]; for (int i = 1; i <= a.length; i++) { if (i == a.length) { if (count > 1) { sb.append(count); } sb.append(a[i - 1]); break; } if (a[i] != t) { if (count > 1) { sb.append(count); } sb.append(t); t = a[i]; count = 1; } else { count++; } } return sb.toString(); } }
相关文章推荐
- 华为校园招聘上机试题 Java实现(二)
- 华为校园招聘上机试题Java实现(一)
- 华为校园招聘上机试题Java实现(二)
- 华为校招上机笔试试题(A卷)——java实现
- 2012华为校园招聘上机试题大全及答案(软件)
- 2012华为校园招聘上机试题大全及答案(软件)
- 2015届华为校园招聘机试题 (java实现)
- 华为2015校园招聘 上机试题
- 2014届华为校园招聘机试题(java实现)
- 2012年华为校园招聘上机试题(重庆地区)及答案解析
- 华为2013校园招聘上机试题(杭州)
- 华为校招上机笔试试题(B卷)——java实现
- 2013华为校园招聘java实现(大家水个回复啊)
- 2015届华为校园招聘机试题 java实现
- 2012届华为校园招聘上机考试题目程序实现(9月6日下午1点场)
- 2012届华为校园招聘机试题(java实现)
- 2015届华为校园招聘机试题 java实现(2)
- 2015届华为校园招聘机试题 (3)java实现
- 2013年华为校园招聘上机题(java)
- 华为2013校园招聘上机笔试题-杭州-亲身体会