您的位置:首页 > 其它

华为机试题02(2015)

2016-03-07 16:17 357 查看
网上搜了几道往年机试题。

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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: