又到校园招聘的时候了,前几天听同学说华为校招还要考上机,然后就在网上找往年的机试题,找到之后就开始战斗了。。下面的题目都是在网上找的,然后代码是自己一个一个写的。。。
1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果。
程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符。

    import java.util.Scanner;public class Test {public static void main(String[] args) {System.out.println(StringASCII("abcd"));Scanner in = new Scanner(System.in);System.out.println("请输入一串小写字母:");String str = in.next();System.out.println(StringASCII(str));in.close();}public static String StringASCII(String str) {StringBuffer reslut = new StringBuffer();// 将字符串转换成数组char[] array = str.toCharArray();for (int i = 0; i < array.length; i++) {char arr= (char) (array[i] + 5);if (arr >'z') {arr = 'a';}reslut.append(arr);}return reslut.toString();}
}

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

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

import java.util.Scanner;public class CountAvg {/*** @param args*/public static void main(String[] args) {
//      int arr[] = { 1, 2, 4, 23, 8, 11, 22, 31 };int[] arr = inputArr();int[] count = count(arr);System.out.println("数组的平均值:" + count[2] + ",小于平均值的个数:" + count[1]+ ",大于平均值的个数:" + count[0]);}// 输入整形数组private static int[] inputArr() {Scanner scanner = new Scanner(System.in);System.out.println("请输入整形数组的长度:");int i = scanner.nextInt();int arr[] = new int[i];System.out.println("请输入整形数组的元素:");for (int j = 0; j < arr.length; j++) {int str = scanner.nextInt();// System.out.println(arr[j]+"----"+str);arr[j] = str;}scanner.close();return arr;}/*** 求出整形数组的平均值,大于和小于平均值的个数* * @param arr* @return*/private static int[] count(int[] arr) {int m = 0, n = 0, avg, total = 0;for (int i = 0; i < arr.length; i++) {total += arr[i];}avg = total / arr.length;for (int i = 0; i < arr.length; i++) {if (avg < arr[i]) {m++;} else {n++;}}int result[] = new int[3];result[0] = m;result[1] = n;result[2] = avg;return result;}
}

3、手动输入一个存储整数的数组,要求输出数组里面的2个最大值。
   实例: 
             输入:1,2,5,9,84,3,2
             输出:84,9

 import java.util.Scanner;public class CountMax {/*** @param args*/public static void main(String[] args) {int[] arr = inputArr();countMax(arr);System.out.println("最大值:" + arr[0] + ",第二大的值" + arr[1]);}/*** 计算出两个最大值* * @param arr* @return*/private static void countMax(int[] a) {// 冒泡排序int temp = 0;for (int i = 0; i < a.length; i++) {for (int j = 0; j < a.length - i - 1; j++) {if (a[j] < a[j + 1]) { // 把这里改成大于,就是升序了temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}// 输入整形数组private static int[] inputArr() {Scanner scanner = new Scanner(System.in);System.out.println("请输入整形数组的长度:");int i = scanner.nextInt();int arr[] = new int[i];System.out.println("请输入整形数组的元素:");for (int j = 0; j < arr.length; j++) {int str = scanner.nextInt();// System.out.println(arr[j]+"----"+str);arr[j] = str;}scanner.close();return arr;}
}
</pre><span style="font-size:18px;">4、回文数字判断。题目描述:    有这样一类数字,他们顺着看和倒着看是相同的数,例如:121,656,2332等,这样的数字就称为:回文数字。编写一个函数,判断某数字是否是回文数字。    要求实现方法:public String isPalindrome(String strIn);【输入】strIn: 整数,以字符串表示;【返回】true: 是回文数字;              false: 不是回文数字;【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出</span><pre name="code" class="java">import java.util.Scanner;public class Palindrome {/*** @param args*/public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入一个整形数字:");String str = in.next();if (isPalindrome(str)) {System.out.println(str + "--是回文数字");} else {System.out.println(str + "--不是回文数字");}in.close();}/*** 判断是否为回文数字* * @param str* @return*/private static boolean isPalindrome(String str) {boolean result = false;System.out.println("str长度---" + str.length());for (int i = 0; i <= str.length() / 2 - 1; i++) {if (str.charAt(i) == str.charAt(str.length() - i - 1)) {result = true;}else {result = false;}}return result;}}

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

import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class RandomStr {/*** @param args*/public static void main(String[] args) {List<String> arrayStr = new ArrayList<String>();for (int i = 0; i < 50; i++) {Random random = new Random();// 0-6int nextInt = random.nextInt(7);int strlen = nextInt + 4;// 打印出随机数String randomStr = randomStr(strlen);// System.out.println("打印出来的字符串:" + randomStr);arrayStr.add(randomStr);}int count = 0;for (String str : arrayStr) {System.out.print(str + " ");if (count % 4 == 0) {// 换行System.out.println();}count++;}}/*** 打印出随机的字符串* * @param strlen* @return*/private static String randomStr(int strlen) {char[] str = new char[strlen];int i = 0;while (i < strlen) {// 生成0-3的随机数int f = new Random().nextInt(4);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

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class NumberOfElement {/*** @param args*/public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入的一组小写字符串:");String str = in.next();in.close();// 正则运算String reg = "^[a-z]*$";if (str.matches(reg)) {Map<Character, Integer> charCount = getCharCount(str);// 遍历mapfor (Map.Entry<Character, Integer> e : charCount.entrySet()) {System.out.println(e.getKey() + " " + e.getValue());}}else {System.out.println("您输入的字符串不符合要求");}}private static Map<Character, Integer> getCharCount(String str) {Map<Character, Integer> map = new HashMap<Character, Integer>();char[] array = str.toCharArray();for (int i = 0; i < array.length; i++) {if (!map.containsKey(array[i])) {map.put(array[i], 1);} else {map.put(array[i], map.get(array[i]) + 1);}}return map;}}

7、要求实现方法public String addTwoBigNumber(String s1,string s2)
 大数相加,注意处理异常

import java.math.BigInteger;
import java.util.Scanner;public class BigNumAdd {/*** @param args*/public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入第一个大数:");String str1 = in.next();System.out.println("请输入第二个大数:");String str2 = in.next();in.close();if (isBigNumber(str1) &&isBigNumber(str2)) {String bigNumber = addTwoBigNumber(str1, str2);System.out.println("两个大数相加的结果为:" + bigNumber);}else {System.out.println("输入错误!");}}/*** 大数相加* * @param s1* @param s2* @return*/public static String addTwoBigNumber(String s1, String s2) {BigInteger bt1 = new BigInteger(s1);BigInteger bt2 = new BigInteger(s2);return bt1.add(bt2).toString();}/*** 判断一个字符串是否为大数* @param str* @return */public static boolean isBigNumber(String str) {boolean result = false;String reg = "[0-9]*$";if (str.matches(reg)) {result = true;} else {result = false;}return result;}
}

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

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

输出:intArrs ={1,3}

import java.util.Arrays;
import java.util.Scanner;public class CountMin {/*** @param args*/public static void main(String[] args) {int[][] arr = {{5,6,1,16},{7,3,9},{5,7,12}};int[] colmin = getColmin(arr);System.out.println(Arrays.toString(colmin));}private 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
功能描述:键盘输入一句话
输出一句话中最常的单词,如果最长的出现多次,返回第一个。这句话只包含数字字母和标点。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class FindLongString {/*** @param args*/public static void main(String[] args) {
//      String str = "a aa,cat tiger.123dd 12ssss,asxdrt saxfdt asdgde";Scanner in = new Scanner(System.in);System.out.println("请任意的输入一串字符串:");String str = in.nextLine();System.out.println("str---" + str);String reslut = getLongString(str);System.out.println("----" + reslut);in.close();}/*** 找出一串字符串中最长的字符* @param str* @return*/private static String getLongString(String str) {String reg = "[ .,]";String[] arr = str.split(reg);ArrayList<String> result = new ArrayList<String>();int length = 0;for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);// 获得长度if (length<arr[i].length()) {length = arr[i].length();result.add(arr[i]);}}return result.get(result.size()-1);}}

10. 功能描述:将字符串中的字母全部替换成字母的下一个字母,
要是最后一位是z或Z则替换为a或A。
输入:aBxyZ
输出:bCyzA

import java.util.Scanner;public class TransNext {/*** @param args*/public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入一串字符串(大小写字母):");String str = in.nextLine();String reg = "^[A-Za-z]+$";
//      String reg2 = "^[A-Z]$";if (str.matches(reg)) {String result = transNext(str);System.out.println("转换后的字符串:" + result);}else {System.out.println("输入不符合要求!");}in.close();}/*** 将字符串中的字母全部替换成字母的下一个字母* @param str 目标字符串* @return*/private static String transNext(String str) {char[] charArray = str.toCharArray();char[] newArray = new char[charArray.length];for (int i = 0; i < charArray.length; i++) {newArray[i] = (char) (charArray[i]+ 1);if (charArray[i] =='Z') {newArray[i] = 'A';}if (charArray[i] =='z') {newArray[i] = 'a';}}return String.valueOf(newArray);}}

11. 功能描述:判断一个字符串中是否只含有相同的子字符串(子串长度>=2)
输入:abab 
返回:true
输入:abcd
返回:false

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class CheckStr {/*** @param args*/public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入一串字符:");String str = in.nextLine();in.close();boolean result = checkString(str);System.out.println("结果--" + result);}public static boolean checkString(String data) {boolean result = false;Map<Character, Integer> map = new HashMap<Character, Integer>();char[] array = data.toCharArray();for (int i = 0; i < array.length; i++) {if (!map.containsKey(array[i])) {result = false;map.put(array[i], 1);}else {result = true;}}return result;}
}

12. 功能描述:已知:yi er san si wu liu qi ba jiu 分别对应123456789,
对一段只含有这几种字符串的字符串进行转换,如:
输入:yiersansan
输出:1233

 public class Tran2Num {/*** 功能描述:已知:yi er san si wu liu qi ba jiu 分别对应123456789,* 对一段只含有这几种字符串的字符串进行转换,如: 输入:yiersansan 输出:1233* * @param args*/public static void main(String[] args) {String str = "yiersansansisiwuwu";String number = trunNumber(str);System.out.println("转换输出的结果--" + number);}public static String trunNumber(String data) {String result = "";String str[] = {"yi","er","san","si","wu","liu","qi"," ba","jiu"};for (int i = 0; i < 9; i++) {if (data.contains(str[i])) {result = data.replace(str[i], String.valueOf(i+1));data = result;}}return result;}
}

13. 功能描述:删除字符串中字符个数最少的字符,最少字符串有多个,最少的要全部删除
               然后返回该子字符串。
输入:asdasdas
输出:asasas

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;public class DeleteMin {/*** 功能描述:删除字符串中字符个数最少的字符,最少字符串有多个,最少的要全部删除 然后返回该子字符串。* 输入:asdasdas 输出:asasas* * @param args*/public static void main(String[] args) {//String str = "asdasdas";Scanner in = new Scanner(System.in);System.out.println("请输入一串字符串:");String str = in.nextLine();in.close();List<Character> deleteChar = deleteLittle(str);for (Character character : deleteChar) {str = str.replace(character.toString(), "");//System.out.println("出现次数最少的字符---" + character.toString());}System.out.println("删除后的字符串---" + str);}private static List<Character> deleteLittle(String str) {// 统计那些字符串的个数最少Map<Character, Integer> map = new HashMap<Character, Integer>();char[] charArray = str.toCharArray();for (int i = 0; i < charArray.length; i++) {if (!map.containsKey(charArray[i])) {map.put(charArray[i], 1);} else {map.put(charArray[i], map.get(charArray[i]) + 1);}}// 删除map中值最小的字符串int[] values = new int[map.size()];int i = 0;for (Map.Entry<Character, Integer> e : map.entrySet()) {// 获得值的大小values[i++] = e.getValue();}// 排序Arrays.sort(values);// 得到最小值int j = values[0];List<Character> list = new ArrayList<Character>();for (Map.Entry<Character, Integer> e : map.entrySet()) {// 通过值获取键if (e.getValue() == j) {Character key = e.getKey();list.add(key);}}return list;}
}

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

输入:6

输出:{1,2}

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class Int2ASSII {/*** @param args*/public static void main(String[] args) {
//      int i = 6;Scanner in = new Scanner(System.in);System.out.println("请输入一个数字:");int i = in.nextInt();in.close();
//      String reg = "^[0-9]*$";
//      if (!String.valueOf(i).matches(reg)) {
//          System.out.println("请输入数字!");
//      }int[] result = trans(i);System.out.println("输出---" + Arrays.toString(result));}/*** 将数字转换成ASII码* * @param i* @return 返回0和1的个数*/private static int[] trans(int i) {// 将整形转换成二进制char[] charArray = Integer.toBinaryString(i).toCharArray();Map<Character, Integer> map = new HashMap<Character, Integer>();for (int j = 0; j < charArray.length; j++) {if (!map.containsKey(charArray[j])) {map.put(charArray[j], 1);} else {map.put(charArray[j], map.get(charArray[j]) + 1);}}
//      int[] result = new int[2];Integer integer = map.get('0');Integer integer2 = map.get('1');int[] result = {integer,integer2};
//      for (Map.Entry<Character, Integer> entry : map.entrySet()) {
//          if (entry.getKey() == '0') {
//              result[0] = entry.getValue();
//          } else {
//              result[1] = entry.getValue();
//          }
//      }return result;}}

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

输入:1010

输出:5

import java.util.Arrays;public class Binary2Int {/*** @param args*/public static void main(String[] args) {String str = "1010";int result = binaryToInt(str);System.out.println("反转后的值:" + result);}/*** 对一个二进制数的每位进行0和1反转,求翻转后的二进制所对应的十进制* @param str* @return*/private static int binaryToInt(String str) {char[] array = str.toCharArray();for (int i = 0; i < array.length; i++) {if (array[i]=='0') {array[i]='1';}else {array[i]='0';}}System.out.println(Arrays.toString(array));String result = "";for (int i = 0; i < array.length; i++) {result += array[i];}return Integer.parseInt(result, 2);}}

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

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

输出:true

public class IsMatch {/*** 判断一个字符串中的"( )"是否配对 * 输入:if(a.equals(a)) 输出:true* @param args*/public static void main(String[] args) {String str = "if(a.(equals(a)))";boolean result = isMatch(str);System.out.println("字符串中的()是否配对:" + result);}/*** 判断()内的字符是否匹配* * @param str* @return*/private static boolean isMatch(String str) {boolean result = false;int count = 0;char[] array = str.toCharArray();for (int i = 0; i < array.length; i++) {if (array[i] == '(') {count++;} else if (array[i] == ')') {count--;}}if (count == 0) {result = true;}return result;}}

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

输入:abab

输出:a b ab ba aba bab

要求实现方法:

public List<String> getChildren(String data)

{

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

//TODO

return list;

}

import java.util.ArrayList;
import java.util.List;public class GetChildren {/*** 查找一个字符串的子字符串集 输入:abab 输出:a b ab ba aba bab* * @param args*/public static void main(String[] args) {String str = "ababc";List<String> children = getChildren(str);
//      System.out.println(children.toString());for (String string : children) {System.out.print(string+" ");}}public static List<String> getChildren(String data) {List<String> list = new ArrayList<String>();for (int i = 1; i < data.length(); i++) {for (int j = data.length() - i + 1; j > 0; j--) {String newStr = data.substring(data.length() - j - i + 1,data.length() - j + 1);
//              System.out.println("----" + newStr);if (!list.contains(newStr)) {list.add(newStr);}}}return list;}
}

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

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

输入:‘A’

输出:‘f’

public class Trans {public static void main(String[] args) {char input = 'X';char output = trans(input);System.out.println(output);}/*** 将大写字母转换成小写字母再加5* @param input* @return*/private static char trans(char input) {// 将大写转为小写char result = (char) (Character.toLowerCase(input) + 5);if (result>'z') {result = (char) (result-26);}return result;}}

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

①先把数组每一行逆序

②再把逆序后每一行进行随机排列

如:{{4,3,32,5},{1,2,3,4},{9,6,5,4}};

⇒4 6 5 9 
 3 4 2 1 
 5 4 32 3

import java.util.Arrays;
import java.util.Random;public class ArraySort {/*** @param args*/public static void main(String[] args) {int input[][] = { { 4, 3, 32, 5 }, { 1, 2, 3, 4 }, { 9, 6, 5, 4 } };int output[][] = arraySort(input);for (int i = 0; i < output.length; i++) {System.out.println(Arrays.toString(input[i]));}}/*** ①先把数组每一行逆序 ②再把逆序后每一行进行随机排列* * @param input* @return*/private static int[][] arraySort(int[][] input) {int[] temp = null;for (int i = 0; i <= input.length / 2; i++) {// 先把数组每一行逆序temp = input[i];input[i] = input[input.length - 1 - i];input[input.length - 1 - i] = temp;}for (int i = 0; i < input.length; i++) {int tmp = 0;for (int j = 0; j < input[i].length; j++) {// 产生[0-len)的数int n = (int) (Math.random()*(input[i].length));int m = (int) (Math.random()*(input[i].length));// 随机交换数据tmp = input[i][m];input[i][m] = input[i][n];input[i][n] = tmp;}}return input;}}

24. 分解质因数

eg:输入 28

输出 2*2*7

public class Test {/*** * @param args*/public static void main(String[] args) {int m = 28;String result = perenum(m);System.out.println("因数--" + result);}private static String perenum(int m) {StringBuffer sb = new StringBuffer();int tmp = m;int i = 0;while (true) {for (i = 2; i <= tmp; i++) {if (tmp % i == 0) {tmp = tmp / i;sb.append(i + "*");break;}}if (tmp == 1){break;}}// 删除最后一个字符String result = sb.toString().substring(0, sb.toString().length()-1);return result;}
}

26. 二维数组转置

例:1 2 3

4 5 6

转置

1 4

2 5

3 6

package com.zjp.huawei;import java.util.Arrays;/*** 二维数组倒置*  二维数组转置
例:1 2 34 5 6
转置1 42 53 6* @author cqu_zhu**/
public class TransArray {/*** @param args*/public static void main(String[] args) {int [][] input = {{1,2,3},{4,5,6}};int [][] output = inversionArray(input);for (int i = 0; i < output.length; i++) {for (int j = 0; j < output[i].length; j++) {System.out.print(output[i][j]+" ");}System.out.println();}}private static int[][] inversionArray(int[][] input) {int result[][] = new int[input[0].length][input.length];for (int i = 0; i < input.length; i++) {for (int j = 0; j < input[i].length; j++) {result[j][i] = input[i][j];}}return result;}}

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

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

public String  childStr(String inputStr){

}

package com.zjp.huawei;import java.util.Scanner;/*** 输入字符串,将该字符串中数字放到非数字的后面,并保持原有顺序不变。 例如:h3a2p0p1y----------happy3201* * @author cqu_zhu* */
public class FindCharAndNum {/*** @param args*/public static void main(String[] args) {
//      String str = "h3a2p0p1y";Scanner in = new Scanner(System.in);System.out.println("请随机输入字母和字符串:");String str = in.nextLine();String reg = "^[0-9a-zA-Z]*$";in.close();if (!str.matches(reg)) {System.out.println("输入的字符串不符合要求");return;}String result = childStr(str);System.out.println(result);}public static String  childStr(String inputStr){StringBuffer charBuffer = new StringBuffer();StringBuffer numBuffer = new StringBuffer();char[] array = inputStr.toCharArray();// 字母的正则表达式String reg = "^[a-zA-Z]*$";String reg2 = "^[0-9]*$";for (int i = 0; i < array.length; i++) {// 如果是字母if (String.valueOf(array[i]).matches(reg)) {charBuffer.append(array[i]);}else if(String.valueOf(array[i]).matches(reg2)){numBuffer.append(array[i]);}}return charBuffer.toString()+numBuffer.toString();}
}

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

eg:610618199001020065  2011

输出:21

package com.zjp.huawei;/*** 输入一个身份证号码(15位和18位)和一个年份,计算现在的年龄(忽略非法参数) eg:610618199001020065 2011 输出:21* * @author cqu_zhu* */
public class Demo28 {/*** @param args*/public static void main(String[] args) {
//      String ID = "610618199001020065";String ID ="110105710923582";int year = 2015;int age = countAge(ID,year);System.out.println("年龄---" + age);}private static int countAge(String ID, int year) {String date = "";//7-12位出生年月日,比如670401代表1967年4月1日if (ID.length() == 15) {String d = ID.substring(6, 8);date = "19"+d;}else if(ID.length() ==18){date = ID.substring(6,10);}int age = year -Integer.parseInt(date);System.out.println(date);return age;}
}

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

package com.zjp.huawei;/*** 输入一个字符串,如果是小写则转换成相应的大写字母的后五位,如果是VWXYZ则转换成abcde,其他的都不变,例如:“aDsR154+-/.”则应该输出为“* FDXR154+-/.”* * @author cqu_zhu* */
public class Demo29 {public static void main(String[] args) {String str = "aDsR154+-/.";String reslut = parseStr(str);System.out.println("转换后的字符串---" + reslut);}private static String parseStr(String str) {char[] array = str.toCharArray();String reg = "^[a-z]*$";for (int i = 0; i < array.length; i++) {if (String.valueOf(array[i]).matches(reg)) {// 把小写转换为大写,并后退5位array[i] = (char) (Character.toUpperCase(array[i]) + 5);if (array[i]>'Z') {array[i]= (char) (array[i]-26);}}}StringBuffer buffer = new StringBuffer();for (int i = 0; i < array.length; i++) {buffer.append(array[i]);}return buffer.toString();}}

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

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

package com.zjp.huawei;import java.util.HashMap;
import java.util.Map;/*** 删除一个字符串里出现次数最多的子字符串
如果有多个出现次数相同的并且出现次数最多则将多个全部删除比如abbccd得到结果 ad* @author cqu_zhu**/
public class Demo30 {/*** @param args*/public static void main(String[] args) {String str = "abbccdeefff";String result = deleteMaxChar(str);System.out.println(result);}/*** 删除字符串字符出现次数最多的字符* @param str* @return*/private static String deleteMaxChar(String str) {char[] array = str.toCharArray();Map<Character,Integer> map = new HashMap<Character,Integer>();for (int i = 0; i < array.length; i++) {if(!map.containsKey(array[i])){map.put(array[i], 1);}else {map.put(array[i], map.get(array[i])+1);}}int m =0;// 得出字符最大值for(Map.Entry<Character, Integer> entry :map.entrySet()){if (entry.getValue() > m) {m = entry.getValue();}}// 根据字符最大值得到相应的字符for(Map.Entry<Character, Integer> entry :map.entrySet()){if (entry.getValue() ==m) {String replace = str.replace(String.valueOf(entry.getKey()), "");str = replace;}}return str;}}

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

1、如输入 Good 返回 TRUE

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

package com.zjp.huawei;/*** 32. 判断字符串首字母就大写,非首字母小写 1、如输入 Good 返回 TRUE 2、过程中不需要输出任何IO流。* * @author cqu_zhu* */
public class Demo32 {/*** @param args*/public static void main(String[] args) {String str = "Good";String result = fristChar(str);System.out.println(result);}private static String fristChar(String str) {String result = "";String reg = "^[A-Z]*$";char[] array = str.toCharArray();if (String.valueOf(array[0]).matches(reg)) {result ="TRUE";}else {result ="FALSE";}return result;}}

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

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

package com.zjp.huawei;import java.util.Arrays;/*** 33. 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”* 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符* * @author cqu_zhu* */
public class Demo33 {/*** @param args*/public static void main(String[] args) {String str = "I am a boy";String result = inversionString(str);System.out.println(result);}private static String inversionString(String str) {String[] splitStr= str.split(" ");String[] newStr = new String[splitStr.length];for (int i = 0; i < splitStr.length; i++) {newStr[splitStr.length -i-1] = splitStr[i];}StringBuffer result = new StringBuffer();for (int i = 0; i < splitStr.length; i++) {result.append(newStr[i] + " ");}return result.toString();}}

34. 题目背景

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

接口

int round(double d)

举例

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

4.4 四舍五入的结果是4

package com.zjp.huawei;import java.util.Arrays;/*** 33. 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”* 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符* * @author cqu_zhu* */
public class Demo34 {/*** @param args*/public static void main(String[] args) {double d = -3.65;int result = round(d);System.out.println("返回的结果--" + result);}private static int round(double d) {String str = String.valueOf(d);String subStr = str.substring(str.indexOf(".") + 1,str.indexOf(".") + 2);int i = Integer.parseInt(subStr);int reg = 0;if (i >= 5) {// 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。reg = (int) Math.ceil(d);} else {// 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。reg = (int) Math.floor(d);}return reg;}}

35.数列求和

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

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

输出保留5位小数。

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

Input         5

Output      1.71667

package com.zjp.huawei;/*** 编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。 1+1/2!+ ....* +1/n! 输出保留5位小数。 下面是一些合理的表达式的例子: Input 5 Output 1.71667* * @author cqu_zhu* */
public class Demo35 {/*** @param args*/public static void main(String[] args) {int k = 5;double result = result(k);if (result>1.5) {// 保留5位有效数字String str = String.valueOf(result);String reg = str.substring(str.indexOf(".")+6, str.indexOf(".")+7);String m = str.substring(str.indexOf(".")+1, str.indexOf(".")+6);String in = str.substring(str.indexOf(".")-1, str.indexOf(".")+1);int n = 0;if (Integer.parseInt(reg)>=5) {n = Integer.parseInt(m)+1;}else {n = Integer.parseInt(m);}System.out.println("---" + in + n);}else {System.out.println("---" + result);}}/*** 求阶乘的倒数* @param k* @return*/private static double result(int k){double d = 0;for (int i = 1; i <= k; i++) {d +=(double)1/fact(i);}return d;}/*** 计算k的阶乘* @param i* @return*/private static int fact(int k) {int i = 1;for (int j = 1; j <= k; j++) {i =j*i;}return i;}}

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

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

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

运行时间限制: 无限制

内存限制: 无限制

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

输出: NA

样例输入: 123

样例输出: 6

package com.zjp.huawei;/*** 计算整数各个数位之和 描述: 要求使用递归实现,计算整数各个数位之和。 举例: 123 --> 1+2+3 = 6 运行时间限制: 无限制 内存限制:* 无限制 输入: 0xff ff ff ff以内的整数 输出: NA 样例输入: 123 样例输出: 6* * @author cqu_zhu* */
public class Demo36 {/*** @param args*/public static void main(String[] args) {int num = 1234351363;int result = bitSum(num);System.out.println("各个位相加得到的和--" + result);}/*** 递归求各个各个数位之和* * @param k* @return*/private static int bitSum(int num) {int tmp = 0;if (num > 10) {tmp += num % 10 + bitSum(num / 10);} else {tmp = num;}return tmp;}}

37.提取不重复的整数

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

运行时间限制: 10 Sec

内存限制: 无限制

输入: 整数,如9876673

注意:

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

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

输出: 整数,如37689

样例输入: 9876673

样例输出: 37689

package com.zjp.huawei;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;/*** 输入一个int型32位整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。* @author cqu_zhu**/
public class Demo37 {/*** @param args*/public static void main(String[] args) {int num = -9876673;if (num <0) {int abs = Math.abs(num);int result = getConvertInt(abs);System.out.println("-" + result);}else {int result = getConvertInt(num);System.out.println(String.valueOf(result));}}private static int getConvertInt(int num) {String str = String.valueOf(num);char[] array = str.toCharArray();List<Character> list = new ArrayList<Character>();for (int i = 0; i < array.length; i++) {if (!list.contains(array[i])) {list.add(array[i]);}}List<Character> newList = new ArrayList<Character>();for (int i = 0; i <list.size(); i++) {newList.add(list.get(list.size()-1-i));}StringBuffer buffer = new StringBuffer();for (Character character : newList) {buffer.append(character);}return Integer.parseInt(buffer.toString());}}

华为校园招聘Java机试题相关推荐

  1. 华为java 上机_华为校园招聘Java上机笔试题

    华为校园招聘Java上机笔试题 1.将大写字母转换成其对应小写字母后的第五个字母,大于z的从头开始数. 2.将一个十进制数(byte类型)转化二进制数,将二进制数前后颠倒,再算出颠倒后其对应的十进制数 ...

  2. 华为机试python打印机_华为校园招聘上机笔试题 扑克牌大小(python)

    本文为大家分享了华为校园招聘上机笔试题,供大家参考,具体内容如下 [编程题] 扑克牌大小 时间限制:10秒 空间限制:131072K 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各 ...

  3. 2013金山校园招聘Java笔试题

    今年金山校园招聘Java笔试题目,昨天(2012.9.17)参加完笔试的留下来的 第一题 :栈内存与堆内存的特点与区别,java中是怎样分配的? 栈内存中用来存放基本数据类型(8种基本类型)和对象的引 ...

  4. 华为校招上机Java_2014年华为校园招聘Java上机笔试题

    1.将大写字母转换成其对应小写字母后的第五个字母,大于z的从头开始数. 2.将一个十进制数(byte类型)转化二进制数,将二进制数前后颠倒,再算出颠倒后其对应的十进制数.(见Test2) 3.选秀节目 ...

  5. 2011年11月校园招聘JAVA面试题整理

    2011年11月校招中,本人参加的均为JAVA应用软件开发的应聘(非测试),有两次中软的笔试面试和一次杭州海康威视的笔试面试,笔试就不多说了,都比较基础,面试时长都在40分钟左右,具体是针对简历中提到 ...

  6. 2015华为校园招聘机试题一

    2015华为校园招聘机试题<一> 今天无意之间看到了2015年华为校园招聘的机试题,于是,做了下,写出来与大家共享.先看第一题: 题目如下: 按要求分解字符串,输入两个数M,N:M代表输入 ...

  7. 2014届华为校园招聘机试题

    华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...

  8. 华为2014校园招聘的机试题目

    华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...

  9. 华为2014校园招聘合肥机试

    华为2014校园招聘合肥机试,简历投晚了,没去参加机试,题目是听参加的同学描述的,大致意思如下 第一题:整数分解,将整数n分解成不同因子的和,后一因子要比前一因子大,且最大因子要小于n,其中n< ...

最新文章

  1. mysql数据库怎样添加字段_MySQL添加字段和修改字段的方法
  2. ruby(wrong number of arguments (1 for 2) )
  3. 生成docker镜像
  4. Boost:序列化之text_wiarchive和和text_woarchive
  5. promo和promotion
  6. oracle sys可以登录,system权限不足,解决方法
  7. May 18:PHP 输出语句
  8. c语言手游常用代码,c语言源代码【操作流程】
  9. MySQL高级-索引
  10. php十二星座_php计算十二星座的函数代码
  11. 大企业中,Java面试官最爱问的问题集锦
  12. JDBC实现增删改查功能
  13. python 时间模块 -- time
  14. Acrel-3200远程预付费电能管理系统的功能介绍
  15. 未来教育mysql下载_未来教育计算机二级题库中的视频为什么无法播放
  16. 好用、好玩的小程序第二弹,统统学会,新技能get
  17. 云巡店php源码,云巡店™〡PC端后台管理员设置 讲解视频(下)
  18. 读洛水《知北游》有感(1)
  19. Excel VBA 小程序 - 文本型数字转为数值型数字
  20. 地产AR模拟看房软件开发

热门文章

  1. Cpp 11 / override 和 final 区别
  2. 活动分享|今晚启明云端与您相约立创直播间,红包\彩屏开发板送不停!
  3. 分享篇--esp32直连天猫精灵
  4. 渭南java_渭南java语言入门教程视频
  5. vc2010中开始执行不调试灰的_消防水炮调试,客户看到调试流程一刹那就满意
  6. html5手机网站照片查看器,HTMLayout仿Picasa照片查看器效果
  7. 【51nod2026】Gcd and Lcm(杜教筛)
  8. 51单片机学习笔记(郭天祥版)(9)——IIC、EEPROM
  9. Python对QQ音乐进行爬取并进行数据分析
  10. SpringBoot配置Druid