华为校园招聘Java机试题
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
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机试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 援疆干部遣退条件是什么
- 下一篇: 豪爵En125洗完化油器风门不提速等一会