华为Java机试题

1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。

程序要求:该字符串只包含小写字母,若其值加5后的字符值大于‘z‘,将其转换成从a开始的字符。

package com.xcbeyond;

/**
 * @author <span style="font-family:宋体;">xcbeyond</span>
 * 2015-5-7下午10:37:43
 * 1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。
 * 程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。
 */
public class StringParseASCII {

	public static void main(String[] args) {
		System.out.print(stringParseASCII("abx"));
	}

	public static String stringParseASCII(String str){
		StringBuffer result = new StringBuffer();
		char tmp;
		for(int i = 0;i<str.length();i++){
			tmp = (char)(str.charAt(i)+5);
			if(tmp > 'z') {
				result.append('a');
			}else {
				result.append(tmp);
			}
		}

		return result.toString();
	}

}

2.程序实现目标:求一个整型数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数。

程序要求:输入:整型数组中的元素个数及各个元素。

输出:整型数组中元素的平均值,大于和小于此平均值的元素的个数。

package com.xcbeyond;

import java.util.Arrays;

/**
 *
 * @author xcbeyond
 * 2015-5-7下午11:06:29
 *2.程序实现目标:求一个整型数组中元素的平均值,并统计其中大于和小于此平均值的元素的个数。
 *程序要求:
 *	输入:整型数组中的元素个数及各个元素。
 *	输出:整型数组中元素的平均值,大于和小于此平均值的元素的个数。
 */
public class CountAvg {
	public static void main(String[] args) {
		int[] array = {1,23,4,13,6};
		System.out.println(Arrays.toString(array)+"的平均值:"+avg(array)+"\n" +
				"大于和小于平均值元素的个数分别为:"+Arrays.toString(countAvg(array)));

	}
	public static int[] countAvg(int[] array) {
		int gt = 0; //grater than
		int lt = 0;	//less than
		int[] result = {0,0};
		int average = avg(array);
		for(int i = 0;i<array.length;i++) {
			if(array[i]>average) {
				gt++;
			}else if(array[i]<average) {
				lt++;
			}
		}
		result[0] = gt;
		result[1] = lt;
		return result;

	}
	/**
	 * average
	 * @param array
	 * @return
	 */
	public static int avg(int[] array) {
		int average = 0;
		int sum = 0;
		for(int i = 0 ;i<array.length;i++) {
			sum += array[i];
		}

		average = sum/array.length;
		return average;
	}

}

3、手动输入一个存储整数的数组,要求输出数组里面的2个最大值。

实例:

输入:1,2,5,9,84,3,2

输出:84,9

package com.xcbeyond;

import java.util.Arrays;
/**
 * @author <span style="font-family:Calibri;">xcbeyond</span>
 * 2015-5-7下午11:35:13
 *3、手动输入一个存储整数的数组,要求输出数组里面的2个最大值。
 *	实例:
 *		输入:1,2,5,9,84,3,2
 *		输出:84,9
 */
public class FindMaxTwoNum {
	public static void main(String[] args) {
		int[] array = {1,2,5,9,84,3,2};
		System.out.println("数组"+Arrays.toString(array)+"里面最大的2个数为:");
		findMaxTwoNum(array);
<span style="font-family:Calibri;">                                     //方法二:
                                    //
                </span> }
	public static void findMaxTwoNum(int[] array) {
		int[] result = {0,0};
		for(int i = 0 ;i<array.length;i++) {
			for(int j = 0;j<array.length-i-1;j++) {
				if(array[j]<array[j+1]) {
					int tmp;
					tmp = array[j];
					array[j] = array[j+1];
					array[j+1] = tmp;
				}
			}
		}

		System.out.println(array[0]+"、"+array[1]);
	}

}

4、回文数字判断。

题目描述:

有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字。编写一个函数,判断某数字是否是回文数字。

要求实现方法:

public String isPalindrome(String strIn);

【输入】strIn: 整数,以字符串表示;

【返回】true: 是回文数字;

false: 不是回文数字;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

package com.xcbeyond;

import java.util.Scanner;

/**
 * @author xcbeyond
 * 2015-5-10下午03:46:56
 *4、回文数字判断。
 *题目描述:
 *	有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:
 *	回文数字。编写一个函数,判断某数字是否是回文数字。
 */
public class IsPalindrome {
	public static void main(String[] args) {
		System.out.print("请输入一个回文数字:");
		Scanner console  = new Scanner(System.in);
		String numStr = console.nextLine();
		if(isPalindrome(numStr)) {
			System.out.println(numStr+"是回文数字!");
		}else{
			System.out.println(numStr+"不是回文数字!");
		}

	}

	public static boolean isPalindrome(String str){
		boolean result = false;
		for(int i = 0 ;i<str.length()/2-1;i++) {
			if(str.charAt(i) == str.charAt(str.length()-1-i)) {
				result = true;
			}
		}

		return result;
	}

}

5、要求:随机打印50个随机(4-10长度)的字符串,要求字符串包含的范围是所有的英文字母包含大小写和数字,按照编码顺序排序,每行打印4个,要求首字符对齐

package com.xcbeyond;

import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author xcbeyond
 * 2015-5-10下午04:05:42
 *5、要求:随机打印50个随机(4-10长度)的字符串,要求字符串包含的范围是
 *	  所有的英文字母包含大小写和数字,按照编码顺序排序,每行打印4个,要求首字符对齐
 */
public class RandomStr {
	public static void main(String[] args) {
		Set<String> setStr = new HashSet<String>();
		for(int i = 0 ;i<50;i++) {
			setStr.add(randomStr(5));
		}

		int count = 1;
		for(String i:setStr){
			System.out.print(i+" ");
			if(count%4 == 0) {
				System.out.println();
			}
			count++;
		}
	}
	/**
	 * @param strLen:随机字符串的长度
	 */
	public static String randomStr(int strLen) {
		char[] str = new char[strLen];
		int i = 0;
		while(i<strLen) {
			int f = (int)Math.random()*3;
			if(f == 0) {
				str[i] = (char)('a' + Math.random()*26);
			}else if(f == 1) {
				str[i] = (char)('A' + Math.random()*26);
			}else {
				str[i] = (char)('0' + Math.random()*10);
			}
			i++;
		}

		return new String(str);
	}
}

6.手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。提示(可以用Map)

实例:

输入:aaabbbccc

输出:a 3

b 3

c 3

package com.xcbeyond;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author xcbeyond
 * 2015-5-10下午04:47:45
 * 6.手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。
 * 	提示(可以用Map)
 * 	实例:
 * 		输入:aaabbbccc
 * 		输出: a 3
 * 			  b 3
 *		      c 3
 */
public class GetCharCount {
	public static void main(String[] args) {
		String str = "aaabbbrcc";
		String reg = "^[a-z]*$";
		if (str.matches(reg)) {
			Map<Character, Integer> map = getCharCount(str);
			for (Map.Entry<Character, Integer> e : map.entrySet()) {
				System.out.println(e.getKey() + ": " + e.getValue());
			}
		}else {
			System.out.println("输入的字符不合法,不是小写字母");
		}
	}
	public static Map<Character,Integer> getCharCount(String str) {
		Map<Character,Integer> map = new HashMap<Character, Integer>();
		char[] arr = str.toCharArray();
		for(int i = 0;i<str.length();i++) {
			if(!map.containsKey(arr[i])) {
				map.put(arr[i], new Integer(1));
			}else {
				map.put(arr[i],map.get(arr[i])+1);
			}

		}
		return map;

	}
}

7、要求实现方法public String addTwoBigNumber(String s1,string s2)

大数相加,注意处理异常

public class Test{

public String addTwoBigNumber(String s1,string s2)

{

return "";

}

public static void main(String[] args)

{

Test test = new Test();

test.addTwoBigNumber("123456789","987654321")

}

}

8、比较二维数组列最小值,组成一个新数组返回。(实现核心算法,不需要使用IO)

输入:intArr = {{5,6,1,16},{7,3,9}}

输出:intArrs ={1,3}

package com.xcbeyond;

import java.util.Arrays;

/**
 * @author xcbeyond
 * 2015-5-10下午09:09:20
 *8、比较二维数组列最小值,组成一个新数组返回。(实现核心算法,不需要使用IO)
 *	输入:intArr = {{5,6,1,16},{7,3,9}}
 *	输出:intArrs ={1,3}
 */
public class GetColMin {
	public static void main(String[] args) {
		int[][] arr = {{5,6,1,16},{7,3,9}};
		System.out.println(Arrays.toString(getColMin(arr)));
	}

	public static int[] getColMin(int[][] arr) {
		int[] minArr = new int[arr.length];
		for(int i = 0;i<arr.length;i++) {
			int[] tmp = arr[i];
			Arrays.sort(tmp);
			minArr[i] = tmp[0];
		}
		return minArr;

	}

}

9. 输入:a aa,cat tiger.123dd

输出: tiger

功能描述:键盘输入一句话

输出一句话中最常的单词,如果最长的出现多次,返回第一个。

这句话只包含数字字母和标点。

package com.xcbeyond;

import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author xcbeyond
 * 2015-5-10下午09:45:03
 *9. 输入:a aa,cat tiger.123dd
 *	   输出: tiger
 *		功能描述:键盘输入一句话
 *		输出一句话中最常的单词,如果最长的出现多次,返回第一个。
 *		这句话只包含数字字母和标点。
 */
public class GetLongString {
	public static void main(String[] args) {
		System.out.println("请输入一句话:");
		Scanner console = new Scanner(System.in);
		String str = console.nextLine();
		System.out.println("最长的单词为:"+getLongString(str));
	}
	public static String getLongString(String str) {
		String[] wordStr = str.split("[ ,.0-9]");
		int sum = 0;
		ArrayList<String> result = new ArrayList<String>();
		for(int i = 0;i<wordStr.length;i++) {
			if(sum<wordStr[i].length()) {
				sum = wordStr[i].length();
				result.add(wordStr[i]);
			}
		}
		return result.get(result.size()-1);

	}

}

10. 功能描述:将字符串中的字母全部替换成字母的下一个字母,

要是最后一位是z或Z则替换为a或A。

输入:aBxyZ

输出:bCyzA

package com.xcbeyond;
/**
 *
 * @author xcbeyond
 * 2015-5-10下午10:11:02
 *10. 功能描述:
 *		将字符串中的字母全部替换成字母的下一个字母,要是最后一位是z或Z则替换为a或A。
 *	           输入:aBxyZ
 *		输出:bCyzA
 */
public class NextString {
	public static void main(String[] args) {
		String str = "aBxyZ";
		System.out.println(nextString(str));
	}

	public static String nextString(String str) {
		String result = "";
		char[] arr = str.toCharArray();
		for(int i = 0;i<arr.length;i++) {
			if(arr[i] == 'z' || arr[i] == 'Z') {
				arr[i] = (char)(arr[i]-25);
			}else if(arr[i]<='z'&&arr[i]>='a' || arr[i]<='Z'&&arr[i]>='A') {
				arr[i] = (char)(arr[i]+1);
			}
		}

		return String.valueOf(arr);
	}

}

11. 功能描述:判断一个字符串中是否只含有相同的子字符串(子串长度>=2)

输入:abab

返回:true

输入:abcd

返回:false

要求实现方法:

public boolean checkString(String data)

{

//TODO

return false;

}

12. 功能描述:已知:yi er san si wu liu qi ba jiu 分别对应123456789,

对一段只含有这几种字符串的字符串进行转换,如:

输入:yiersansan

输出:1233

要求实现方法:

public String trunNumber(String data)

{

//TODO

return "";

}

13. 功能描述:删除字符串中字符个数最少的字符,最少字符串有多个,最少的要全部删除

然后返回该子字符串。

输入:asdasdas

输出:asasas

要求实现方法:

public String deleteLittle(String data)

{

//TODO

return "";

}

14. 功能描述:找出一个int[]中满足 2^n的数字,然后组成的新的数组

输入:{4,3,8}

输出:{4,8}

要求实现方法:

public int[] nextString(int[] data)

{

//TODO

return null;

}

15.

功能描述:共data1个人,围成一圈,然后标号,从1-data1。

然后从data2号开始从1报数,报3的出列,求出列序列。

返回一个数组

如:

输入:3,2

输出:1,2,3

要求实现方法:

/**

* data1:人数

* data2 : 起始位置

*

*/

public int[] circleOut(int data1,int data2)

{

int outNum = 3;

//TODO

return null;

}

16. 功能描述:统计一个数字转为二进制后,0和1的个数,组成数组返回

输入:6

输出:{1,2}

要求实现方法:

public int[] getNumber(int data)

{

//TODO

return null;

}

17. 功能描述:对一个二进制数的每位进行0和1反转,求翻转后的二进制所对应的十进制

输入:110

输出:5

要求实现方法:

public String getNumber(BigInteger data)

{

//TODO

return "";

}

18. 功能描述:判断一个字符串中的"( )"是否配对

输入:if(a.equals(a))

输出:true

要求实现方法:

public boolean isDouble(String data)

{

//TODO

return false;

}

19. 功能描述:查找一个字符串的子字符串集

输入:abab

输出:a b ab ba aba bab

要求实现方法:

public List<String> getChildren(String data)

{

List<String> list = new ArrayList<String>();

//TODO

return list;

}

20. 功能描述:数组的循环移位,

输入:{a,b,c},2

输出:{b,c,a}

要求实现方法:

/**

*data :待循环数组

*index:移动位数

*/

public String[] getChildren(String[] data,int index)

{

//TODO

return null;

}

21. 程序实现目标: 输入一个字符,将字符转换为小写,将其对应的ASCII值加5后,输出结果。

程序要求:若其值加5后的字符值大于‘z‘,将其转换成从a开始的字符。

输入:‘A’

输出:‘f’

22. 要求:将一个二维数组进行逆序,逆序后所有的元素行列不定,进行随机排列

23. 根据输入m数据,找出str的m个字符的所有字符串

例如"abc" m=2

"ab" "ac" "bc"

"abcd" m=3

"abc" "acd" "bcd" "abd"

public ArrayList<String> perenum(String str,int m)

{

return null;

}

24. 分解质因数

eg:输入 28

输出 2*2*7

25.n个长度的字符串中取m个长度的组合

26. 二维数组转置

例:1 2 3

4 5 6

转置

1 4

2 5

3 6

27. 功能描述:输入字符串,将该字符串中数字放到非数字的后面,并保持原有顺序不变。

例如:h3a2p0p1y----------happy3201

public String  childStr(String inputStr){

}

28. 输入一个身份证号码(15位和18位)和一个年份,计算现在的年龄(忽略非法参数)

eg:610618199001020065  2011

输出:21

29. 输入一个字符串,如果是小写则转换成相应的大写字母的后五位,如果是VWXYZ则转换成abcde,其他的都不变,例如:“aDsR154+-/.”则应该输出为“FDXR154+-/.”

30. 字母转换(完成给出类中的方法):

要求:

1、传入大写字母,返回小写字母。

2、返回的小写字母应为该大写字母对应的小写字母后第五个小写字母,

例:出入‘A‘,则返回f.

3、若按2中的要求返回的字母超过z,则超过1返回a,超过2返回b,依次类推;

public class test{

public static void main(String[] args)

{

//可写测试代码

}

//需要完成的方法

public char upperToLower(char upperCase)

{

//完成代码

}

}

31. 删除一个字符串里出现次数最多的子字符串

如果有多个出现次数相同的并且出现次数最多则将多个全部删除比如abbccd得到结果 ad

32. 判断字符串首字母就大写,非首字母小写

1、如输入 Good 返回 TRUE

2、过程中不需要输出任何IO流。

33. 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”

所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符

接口说明

/**

* 反转句子

*

* @param sentence 原句子

* @return 反转后的句子

*/

public String reverse(String sentence);

34. 题目背景

写出一个程序,接受一个浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整

接口

int round(double d)

举例

-4.5 四舍五入的结果是-4

4.4 四舍五入的结果是4

35.数列求和

编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。

1+1/2!+ .... +1/n!

输出保留5位小数。

下面是一些合理的表达式的例子:

Input         5

Output      1.71667

36. 计算整数各个数位之和

描述: 要求使用递归实现,计算整数各个数位之和。

举例: 123 --> 1+2+3 = 6

运行时间限制: 无限制

内存限制: 无限制

输入: 0xff ff ff ff以内的整数

输出: NA

样例输入: 123

样例输出: 6

答案提示:

37.提取不重复的整数

描述: 输入一个int型32位整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

运行时间限制: 10 Sec

内存限制: 无限制

输入: 整数,如9876673

注意:

1、整数最后的0,请忽略,例如:输入1750,输出:571

2、负数,保留‘-‘在前面,例如:输入-175,输出:-571

输出: 整数,如37689

样例输入: 9876673

样例输出: 37689

时间: 2024-10-18 08:26:25

华为Java机试题的相关文章

华为2014机试题(一)

过几天就要进行华为的机试了,今儿临时抱抱佛脚,在网上找到2014届华为校招的机试题,琢磨了一会儿,贴出来记录下. 首先感谢一下Hackbuteer提供的题目:http://blog.csdn.net/hackbuteer1/article/details/11132567 对于第一题,字符过滤.最简单也是最直接的就是HASH.题目规定了输入序列只能为小写字符'a~z'.因此直接开辟一个大小为26的数组用于记录当前字符是否已经出现即可. 需要注意的问题: 1. hash数组记得初始化 2. pOu

2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)

再来一套2015年的华为机试题. 第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" 分析思路: 容易题 1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,然

2013 华为校招机试题

第一题: 删除字符串中所有给定的子串(40分)问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作.要求实现函数:int delete_sub_str(const char *str, const char *sub_str, char *result_str)[输入] str:输入的被操作字符串,sub_str:需要查找并删除的特定子字符串[输出] result_str:在str字符串中删除所有sub_str子字符串后的结果[返回] 删除的子字符串的个数注:I.

2014 华为校招机试题(c/c++开发类)

第一题: 1.2.3....n盏灯,同时有n个人, 第1个人将1的倍数的灯拉一下, 第2个人将2的倍数的灯拉一下, ...... 问最后有几盏灯是亮的, 初始状态下灯是灭的, 输入整数n(n<65536), 输出亮的灯数 方法解析:设置一个map,关键字为灯的编号,值为0或1,分别表示灯灭和灯亮状态,遍历map,第i个灯,将所有i倍数的灯进行一次取反操作,也可以通过数组实现.代码如下: [cpp] view plaincopy #include "stdafx.h" #inclu

华为应聘机试题——周期串问题

描述: 题目标题: 题目描述 如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期. 例如,abcabcabcabc以3为周期(注意,它也可以6和12为周期,结果取最小周期3). 字符串的长度小于等于100,由调用者保证. 详细描述: 接口说明 原型: int GetMinPeriod(char *inputstring); 输入参数: char * inputstring:字符串 返回值: int 字符串最小周期 知识点: 涉及知识点: C语言基础:字符串 性能要求: 无

[LeetCode 85] Maximal Rectangle (华为2015机试)

题目链接:maximal-rectangle import java.util.Arrays; /** * Given a 2D binary matrix filled with 0's and 1's, * find the largest rectangle containing all ones and return its area. * */ public class MaximalRectangle { // 65 / 65 test cases passed. // Status

华为JAVA(面试问题及答案节)

华为JAVA面试题 (后记:我没想到华为面试题是不寻常,,至少对我这种鸟来说是这样.对我个人来说.看看这样的题.可能比看<Think In Java>都还要好.因为这里面有很多的东西,都是我们平时没有太在意,或者是只是懂一点皮毛而已,通过做一下这样的练习.把自己不知道.不熟悉的知识点,利用这个机会好好的巩固一下. 这些答案是我自己做的,有一些是从网上来的,有一部是自己做的,并且还有一部份没有做完.我不敢保证都对,所以请你在引用的时候.务必通过自己核对一下. 当然.我既然能够把这些答案放在这里,

华为的一道机试题--等式变换

华为的一道机试题 (http://blog.csdn.net/zombie_slicer/article/details/37346025) 第三题:等式变换 输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立. 1 2 3 4 5 6 7 8 9 = X 比如: 12-34+5-67+89 = 5 1+23+4-5+6-7-8-9 = 5 请编写程序,统计满足输入整数的所有整数个数. 输入:       正整数,等式右边的数字 输出:       使该等式成立的个数 样

Java基础机试题

package day8;import java.util.Scanner;/** * Java基础机试题 * @author:lyrand * */public class convert {        static void exitContinue(){                while (true){            System.out.print("你想继续吗?(y/n)");            Scanner sc = new Scanner(Sys