華為Java機(jī)試題


作者:xcbeyond
瘋狂源自夢(mèng)想,技術(shù)成就輝煌!微信公眾號(hào):《程序猿技術(shù)大咖》號(hào)主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗(yàn),樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項(xiàng)目的研發(fā)工作,涉及架構(gòu)設(shè)計(jì)、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對(duì)于Java、微服務(wù)、數(shù)據(jù)庫(kù)、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗(yàn)。 






   
1.程序?qū)崿F(xiàn)目標(biāo): 輸入一個(gè)字符串,將其各個(gè)字符對(duì)應(yīng)的ASCII值加5后,輸出結(jié)果。

    程序要求:該字符串只包含小寫字母,若其值加5后的字符值大于'z',將其轉(zhuǎn)換成從a開始的字符。

 

    package com.xcbeyond;
     
    /**
     * @author xcbeyond
     * 2015-5-7下午10:37:43
     * 1.程序?qū)崿F(xiàn)目標(biāo): 輸入一個(gè)字符串,將其各個(gè)字符對(duì)應(yīng)的ASCII值加5后,輸出結(jié)果。
     * 程序要求:該字符串只包含小寫字母,若其值加5后的字符值大于'z',將其轉(zhuǎn)換成從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.程序?qū)崿F(xiàn)目標(biāo):求一個(gè)整型數(shù)組中元素的平均值,并統(tǒng)計(jì)其中大于和小于此平均值的元素的個(gè)數(shù)。

  程序要求:輸入:整型數(shù)組中的元素個(gè)數(shù)及各個(gè)元素。

                     輸出:整型數(shù)組中元素的平均值,大于和小于此平均值的元素的個(gè)數(shù)。

 

    package com.xcbeyond;
     
    import java.util.Arrays;
     
    /**
     *
     * @author xcbeyond
     * 2015-5-7下午11:06:29
     *2.程序?qū)崿F(xiàn)目標(biāo):求一個(gè)整型數(shù)組中元素的平均值,并統(tǒng)計(jì)其中大于和小于此平均值的元素的個(gè)數(shù)。
     *程序要求:
     *    輸入:整型數(shù)組中的元素個(gè)數(shù)及各個(gè)元素。
     *    輸出:整型數(shù)組中元素的平均值,大于和小于此平均值的元素的個(gè)數(shù)。
     */
    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" +
                    "大于和小于平均值元素的個(gè)數(shù)分別為:"+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、手動(dòng)輸入一個(gè)存儲(chǔ)整數(shù)的數(shù)組,要求輸出數(shù)組里面的2個(gè)最大值。

   實(shí)例:

             輸入: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、手動(dòng)輸入一個(gè)存儲(chǔ)整數(shù)的數(shù)組,要求輸出數(shù)組里面的2個(gè)最大值。
     *    實(shí)例:
     *        輸入: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("數(shù)組"+Arrays.toString(array)+"里面最大的2個(gè)數(shù)為:");
            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、回文數(shù)字判斷。

題目描述:

    有這樣一類數(shù)字,他們順著看和倒著看是相同的數(shù),例如:121,656,2332等,這樣的數(shù)字就稱為:回文數(shù)字。編寫一個(gè)函數(shù),判斷某數(shù)字是否是回文數(shù)字。

    要求實(shí)現(xiàn)方法:

public String isPalindrome(String strIn);

【輸入】strIn: 整數(shù),以字符串表示;

【返回】true: 是回文數(shù)字;

              false: 不是回文數(shù)字;

 

【注意】只需要完成該函數(shù)功能算法,中間不需要有任何IO的輸入輸出

    package com.xcbeyond;
     
    import java.util.Scanner;
     
    /**
     * @author xcbeyond
     * 2015-5-10下午03:46:56
     *4、回文數(shù)字判斷。
     *題目描述:
     *    有這樣一類數(shù)字,他們順著看和倒著看是相同的數(shù),例如:121,656,2332等,這樣的數(shù)字就稱為:
     *    回文數(shù)字。編寫一個(gè)函數(shù),判斷某數(shù)字是否是回文數(shù)字。
     */
    public class IsPalindrome {
        public static void main(String[] args) {
            System.out.print("請(qǐng)輸入一個(gè)回文數(shù)字:");
            Scanner console  = new Scanner(System.in);
            String numStr = console.nextLine();
            if(isPalindrome(numStr)) {
                System.out.println(numStr+"是回文數(shù)字!");
            }else{
                System.out.println(numStr+"不是回文數(shù)字!");
            }
           
        }
       
        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;
                }else {
                                    result = false;
                            }
            }
           
            return result;
        }
     
    }

 

 

 

 

 

 

 

5、要求:隨機(jī)打印50個(gè)隨機(jī)(4-10長(zhǎng)度)的字符串,要求字符串包含的范圍是所有的英文字母包含大小寫和數(shù)字,按照編碼順序排序,每行打印4個(gè),要求首字符對(duì)齊

 

    package com.xcbeyond;
     
    import java.util.HashSet;
    import java.util.Set;
     
    /**
     *
     * @author xcbeyond
     * 2015-5-10下午04:05:42
     *5、要求:隨機(jī)打印50個(gè)隨機(jī)(4-10長(zhǎng)度)的字符串,要求字符串包含的范圍是
     *      所有的英文字母包含大小寫和數(shù)字,按照編碼順序排序,每行打印4個(gè),要求首字符對(duì)齊
     */
    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:隨機(jī)字符串的長(zhǎng)度
         */
        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.手動(dòng)輸入一個(gè)字符串,僅限小寫字母,統(tǒng)計(jì)并輸出每個(gè)字符在字符串中出現(xiàn)的次數(shù),并輸出。提示(可以用Map)

實(shí)例:

輸入: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.手動(dòng)輸入一個(gè)字符串,僅限小寫字母,統(tǒng)計(jì)并輸出每個(gè)字符在字符串中出現(xiàn)的次數(shù),并輸出。
     *     提示(可以用Map)
     *     實(shí)例:
     *         輸入: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、要求實(shí)現(xiàn)方法public String addTwoBigNumber(String s1,string s2)

 大數(shù)相加,注意處理異常

 

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、比較二維數(shù)組列最小值,組成一個(gè)新數(shù)組返回。(實(shí)現(xiàn)核心算法,不需要使用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、比較二維數(shù)組列最小值,組成一個(gè)新數(shù)組返回。(實(shí)現(xiàn)核心算法,不需要使用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

功能描述:鍵盤輸入一句話

               輸出一句話中最常的單詞,如果最長(zhǎng)的出現(xiàn)多次,返回第一個(gè)。

               這句話只包含數(shù)字字母和標(biāo)點(diǎn)。

 

    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
     *        功能描述:鍵盤輸入一句話
     *        輸出一句話中最常的單詞,如果最長(zhǎng)的出現(xiàn)多次,返回第一個(gè)。
     *        這句話只包含數(shù)字字母和標(biāo)點(diǎn)。
     */
    public class GetLongString {
        public static void main(String[] args) {
            System.out.println("請(qǐng)輸入一句話:");
            Scanner console = new Scanner(System.in);
            String str = console.nextLine();
            System.out.println("最長(zhǎng)的單詞為:"+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. 功能描述:將字符串中的字母全部替換成字母的下一個(gè)字母,

要是最后一位是z或Z則替換為a或A。

輸入:aBxyZ

輸出:bCyzA






 

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * 2015-5-10下午10:11:02
     *10. 功能描述:
     *        將字符串中的字母全部替換成字母的下一個(gè)字母,要是最后一位是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. 功能描述:判斷一個(gè)字符串中是否只含有相同的子字符串(子串長(zhǎng)度>=2)

輸入:abab

返回:true

輸入:abcd

返回:false

 

要求實(shí)現(xiàn)方法:

public boolean checkString(String data)

{

    //TODO

    return false;

}

12. 功能描述:已知:yi er san si wu liu qi ba jiu 分別對(duì)應(yīng)123456789,

對(duì)一段只含有這幾種字符串的字符串進(jìn)行轉(zhuǎn)換,如:

輸入:yiersansan

輸出:1233

要求實(shí)現(xiàn)方法:

public String trunNumber(String data)

{

    //TODO

    return "";

}

13. 功能描述:刪除字符串中字符個(gè)數(shù)最少的字符,最少字符串有多個(gè),最少的要全部刪除

               然后返回該子字符串。

輸入:asdasdas

輸出:asasas

    package com.xcbeyond;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
     
    /**
     *
     * @author xcbeyond
     * @date 2015/05/11 13:16:06
     */
    public class DeleteLittle {
        public static void main(String[] args) {
            String str = "asdasdas";
            System.out.println(deleteLittle(str));
        }
        public static String deleteLittle(String str) {
            Map<Character,Integer> map = new HashMap<Character,Integer>();
            char[] ch = str.toCharArray();
            for(int i = 0;i<ch.length;i++) {
                if(!map.containsKey(ch[i])){
                    map.put(ch[i], 1);
                }else {
                    map.put(ch[i], map.get(ch[i])+1);
                }
            }
           
            List<Map.Entry<Character,Integer>> list = new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());
            Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>(){
     
                @Override
                public int compare(Entry<Character, Integer> o1,
                        Entry<Character, Integer> o2) {
                    return o1.getValue().compareTo(o2.getValue());
                }
               
            });
           
            String[] s = str.split(list.get(0).getKey().toString());
            StringBuffer sb = new StringBuffer();
            for(int i = 0;i<s.length;i++) {
                sb.append(s[i]);
            }
           
            return sb.toString();
           
        }
    }


 

14. 功能描述:找出一個(gè)int[]中滿足 2^n的數(shù)字,然后組成的新的數(shù)組

輸入:{4,3,8}

輸出:{4,8}

 

    package com.xcbeyond;
     
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
     
    /**
     *
     * @author xcbeyond
     * @date 2015/05/11 14:04:43
     */
    public class NextString {
        public static void main(String[] args) {
            int[] arr = {4,3,8};
            System.out.println(Arrays.toString(nextString(arr)));
        }
        public static int[] nextString(int[] arr) {
            List<Integer> list = new ArrayList<Integer>();
            for(int i = 0;i<arr.length;i++) {
                int tmp = arr[i];
                while(tmp != 2) {
                    if(tmp%2==0) {
                        tmp = tmp/2;
                    }else{
                        break;
                    }
                }
                if(tmp == 2) {
                    list.add(arr[i]);
                }
            }
            int[] resultArr = new int[list.size()];
            for(int i = 0;i<list.size();i++) {
                resultArr[i] = list.get(i);
            }
            return resultArr;
           
        }
    }

 

15.

功能描述:共data1個(gè)人,圍成一圈,然后標(biāo)號(hào),從1-data1。

                 然后從data2號(hào)開始從1報(bào)數(shù),報(bào)3的出列,求出列序列。

                返回一個(gè)數(shù)組

如:

輸入:3,2

輸出:1,2,3

要求實(shí)現(xiàn)方法:

/**

 * data1:人數(shù)

 * data2 : 起始位置

 *

 */

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

{

     int outNum = 3;

    //TODO

    return null;

}

16. 功能描述:統(tǒng)計(jì)一個(gè)數(shù)字轉(zhuǎn)為二進(jìn)制后,0和1的個(gè)數(shù),組成數(shù)組返回

輸入:6

輸出:{1,2}

 

    package com.xcbeyond;
     
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
     
    /**
     * @author xcbeyond
     * @date 2015/05/11 14:32:46
     */
    public class IntParseBinary {
        public static void main(String[] args) {
            int data = 6;
            System.out.println(Arrays.toString(getNumber(data)));
        }
       
        public static int[] getNumber(int data) {
            char[] binaryStr = Integer.toBinaryString(data).toCharArray();
            Map<Character,Integer> map = new HashMap<Character,Integer>();
            for(int i = 0;i<binaryStr.length;i++) {
                if(!map.containsKey(binaryStr[i])) {
                    map.put(binaryStr[i], 1);
                }else{
                    map.put(binaryStr[i], map.get(binaryStr[i])+1);
                }
            }
            return new int[]{map.get('0'),map.get('1')};
           
        }
     
    }

 

17. 功能描述:對(duì)一個(gè)二進(jìn)制數(shù)的每位進(jìn)行0和1反轉(zhuǎn),求翻轉(zhuǎn)后的二進(jìn)制所對(duì)應(yīng)的十進(jìn)制

輸入:1010

輸出:5

 

    package com.xcbeyond;
     
    /**
     *
     * @author xcbeyond
     * @date 2015/05/11 15:01:03
     */
    public class BitReverse {
        public static void main(String[] args) {
            String data = "1010";
            System.out.println(getNumber(data));
        }
        public static String getNumber(String data){
            char[] dataStr = data.toCharArray();
            for(int i = 0;i<dataStr.length;i++) {
                if(dataStr[i] == '0') {
                    dataStr[i] = '1';
                }else {
                    dataStr[i] = '0';
                }
            }
           
            String str = "";
            for(int i = 0 ;i<dataStr.length;i++) {
                str += dataStr[i];
           
            }
            String res = Integer.valueOf(str, 2).toString();
            return res;
           
        }
     
    }

 

18. 功能描述:判斷一個(gè)字符串中的"( )"是否配對(duì)

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

輸出:true

 

    package com.xcbeyond;
    /**
     * @author xcbeyond
     * @date 2015/05/11 15:50:39
     */
    public class IsMatch {
        public static void main(String[] args) {
            String str = "if(a.equals(a))";
            System.out.println(isMatch(str));
        }
       
        public static boolean isMatch(String str){
            boolean isMatch = false;
            char[] ch = str.toCharArray();
            int count = 0;
            for(int i = 0 ;i<ch.length;i++) {
                if(ch[i] == '(') {
                    count++;
                }else if(ch[i] == ')') {
                    count--;
                }
            }
           
            if(count == 0) {
                isMatch = true;
            }
            return isMatch;
           
        }
     
    }

 

19. 功能描述:查找一個(gè)字符串的子字符串集

輸入:abab

輸出:a b ab ba aba bab

 

要求實(shí)現(xiàn)方法:

public List<String> getChildren(String data)

{

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

    //TODO

    return list;

}

20. 功能描述:數(shù)組的循環(huán)移位,

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

輸出:{b,c,a}

 

要求實(shí)現(xiàn)方法:

/**

 *data :待循環(huán)數(shù)組

 *index:移動(dòng)位數(shù)

 */

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

{

    //TODO

    return null;

}

    package com.xcbeyond;
     
    import java.util.Arrays;
     
    /**
     * @author xcbeyond
     * @date 2015/05/12 9:16:56
     */
    public class Demo20 {
        public static void main(String[] args) {
            String[] data = {"a","b","c"};
            System.out.println(Arrays.toString(getChildren(data,2)));
           
        }
        public static String[] getChildren(String[] data,int index){
            String[] resData = new String[data.length];
            for(int i = 0;i<resData.length-1;i++) {
                resData[i] = data[index-1+i];
            }
            resData[resData.length-1] = data[0];
            return resData;
           
        }
     
    }

 

21. 程序?qū)崿F(xiàn)目標(biāo): 輸入一個(gè)字符,將字符轉(zhuǎn)換為小寫,將其對(duì)應(yīng)的ASCII值加5后,輸出結(jié)果。

程序要求:若其值加5后的字符值大于'z',將其轉(zhuǎn)換成從a開始的字符。

輸入:‘A’

輸出:‘f’

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 9:31:45
     */
    public class Demo21 {
        public static void main(String[] args) {
            System.out.println(parseChar('X'));
        }
        public static char parseChar(char ch) {
            char resCh = 'a';
            resCh = (char)(Character.toLowerCase(ch) + 5);
            if(resCh > 'z') {
                resCh = (char)(resCh - 26);
            }
            return resCh;
        }
     
    }

 






22. 要求:將一個(gè)二維數(shù)組進(jìn)行逆序,逆序后所有的元素行列不定,進(jìn)行隨機(jī)排列

①先把數(shù)組每一行逆序

②再把逆序后每一行進(jìn)行隨機(jī)排列

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

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

    package com.xcbeyond;
     
    import java.util.Random;
     
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 9:55:26
     */
    public class Demo22 {
        public static void main(String[] args) {
            int[][] arr = {{4,3,32,5},{1,2,3,4},{9,6,5,4}};
            int[][] arr2 = arrRandomReverse(arr);
            for(int i = 0;i<arr2.length;i++) {
                for(int j = 0;j<arr2[i].length;j++) {
                    System.out.print(arr2[i][j]+" ");
                }
                System.out.println();
            }
     
        }
        public static int[][] arrRandomReverse(int[][] arr) {
            int[][] resArr = new int[arr.length][];
            for(int i = 0 ;i<arr.length;i++) {
                resArr[arr.length-1-i] = arr[i];
            }
            Random r = new Random();
            for(int i = 0 ;i<resArr.length;i++) {
                for(int j = 0;j<resArr[i].length;j++) {
                    int p = r.nextInt(resArr[i].length);
                    int tmp;
                    tmp = resArr[i][j];
                    resArr[i][j] = resArr[i][p];
                    resArr[i][p] = tmp;
                }
            }
            return resArr;
           
        }
    }

 

23. 根據(jù)輸入m數(shù)據(jù),找出str的m個(gè)字符的所有字符串

例如"abc" m=2

"ab" "ac" "bc"

"abcd" m=3

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

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

{

 

   return null;

}

24. 分解質(zhì)因數(shù)

eg:輸入 28

輸出 2*2*7

25.n個(gè)長(zhǎng)度的字符串中取m個(gè)長(zhǎng)度的組合

26. 二維數(shù)組轉(zhuǎn)置

例:1 2 3

    4 5 6

轉(zhuǎn)置

    1 4

    2 5

   3 6

    package com.xcbeyond;
    /**
     * @author xcbeyond
     * @date 2015/05/12 10:56:04
     */
    public class Demo26 {
        public static void main(String[] args) {
            int[][] arr = {{4,3,32,5},{1,2,3,4},{9,6,5,4}};
            int[][] arr2 = arrayReverse(arr);
            for(int i = 0;i<arr2.length;i++) {
                for(int j = 0;j<arr2[i].length;j++) {
                    System.out.print(arr2[i][j]+" ");
                }
                System.out.println();
            }
           
        }
        public static int[][] arrayReverse(int[][] arr) {
            int[][] resArr = new int[arr[0].length][arr.length];
            for(int i = 0;i<resArr.length;i++) {
                for(int j = 0;j<resArr[i].length;j++) {
                    resArr[i][j] = arr[j][i];
                }
            }
            return resArr;
           
        }
     
    }

 

27. 功能描述:輸入字符串,將該字符串中數(shù)字放到非數(shù)字的后面,并保持原有順序不變。

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

public String  childStr(String inputStr){

}

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 11:02:27
     */
    public class Demo27 {
        public static void main(String[] args) {
            String str = "h3a2p0p1y";
            System.out.println(childStr(str));
        }
       
        public static String  childStr(String inputStr){
            String numStr = "";
            String str = "";
            String numRegex = "[0-9]";
            String strRegex = "[a-zA-Z]";
            for(int i = 0;i<inputStr.length();i++) {
                if((inputStr.charAt(i)+"").matches(numRegex)) {
                    numStr += inputStr.charAt(i);
                }else if((inputStr.charAt(i)+"").matches(strRegex)) {
                    str += inputStr.charAt(i);
                }
            }
            return str+numStr;
           
        }
     
    }

 

28. 輸入一個(gè)身份證號(hào)碼(15位和18位)和一個(gè)年份,計(jì)算現(xiàn)在的年齡(忽略非法參數(shù))

eg:610618199001020065  2011

輸出:21

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 11:14:56
     */
    public class Demo28 {
        public static void main(String[] args) {
            String id = "610618199001020065";
            System.out.println(countAge(id,2011));
        }
       
        public static int countAge(String ID,int date) {
            String birthDate = "";
            if(ID.length() == 15) {
                birthDate = ID.substring(3, 7);
            }else if(ID.length() == 18) {
                birthDate = ID.substring(6, 10);
            }
           
            int age = 0;
            age = date - Integer.parseInt(birthDate);
            return age;
           
        }
     
    }

29. 輸入一個(gè)字符串,如果是小寫則轉(zhuǎn)換成相應(yīng)的大寫字母的后五位,如果是VWXYZ則轉(zhuǎn)換成abcde,其他的都不變,例如:“aDsR154+-/.”則應(yīng)該輸出為“FDXR154+-/.”

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 13:39:20
     */
    public class Demo29 {
        public static void main(String[] args) {
            String str = "aDsR154+-/.";
            System.out.println(parseStr(str));
        }
        public static String parseStr(String str) {
            StringBuffer sb = new StringBuffer();
            char tmp;
            for(int i = 0;i<str.length();i++) {
                if(str.charAt(i)>='a' && str.charAt(i)<='z') {
                    tmp =(char)(Character.toUpperCase(str.charAt(i))+5);
                    if(tmp > 'Z') {
                        tmp = (char)(tmp - 26);
                    }
                    sb.append(tmp);
                }else {
                    sb.append(str.charAt(i));
                }
            }
            return sb.toString();
           
        }
     
    }

 

30. 字母轉(zhuǎn)換(完成給出類中的方法):

要求:

 1、傳入大寫字母,返回小寫字母。

 2、返回的小寫字母應(yīng)為該大寫字母對(duì)應(yīng)的小寫字母后第五個(gè)小寫字母,

  例:出入'A',則返回f.

 3、若按2中的要求返回的字母超過(guò)z,則超過(guò)1返回a,超過(guò)2返回b,依次類推;

public class test{

  public static void main(String[] args)

 {

   //可寫測(cè)試代碼  

 }

   //需要完成的方法

  public char upperToLower(char upperCase)

  {

     //完成代碼

  }

}

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 14:05:49
     */
    public class Demo30 {
        public static void main(String[] args) {
            char ch = 'A';
            System.out.println(upperToLower(ch));
        }
        public static char upperToLower(char upperCase) {
            char resCh = 'a';
            resCh = (char)(Character.toLowerCase(upperCase) + 5);
            if(resCh > 'z') {
                resCh = (char)(resCh - 26);
            }
            return resCh;
           
        }
    }

 

31. 刪除一個(gè)字符串里出現(xiàn)次數(shù)最多的子字符串

如果有多個(gè)出現(xiàn)次數(shù)相同的并且出現(xiàn)次數(shù)最多則將多個(gè)全部刪除比如abbccd得到結(jié)果 ad

32. 判斷字符串首字母就大寫,非首字母小寫

1、如輸入 Good 返回 TRUE

2、過(guò)程中不需要輸出任何IO流。

33. 將一個(gè)英文語(yǔ)句以單詞為單位逆序排放。例如“I am a boy”,逆序排放后為“boy a am I”

所有單詞之間用一個(gè)空格隔開,語(yǔ)句中除了英文字母外,不再包含其他字符

接口說(shuō)明

/**

 * 反轉(zhuǎn)句子

 *

 * @param sentence 原句子

 * @return 反轉(zhuǎn)后的句子

 */

public String reverse(String sentence);

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 14:23:12
     */
    public class Demo33 {
        public static void main(String[] args) {
            String str = "I am a boy";
            System.out.println(reverse(str));
        }
        public static String reverse(String sentence) {
            String regex = "[ *]";
            String[] ch = sentence.split(regex);
            StringBuffer sb = new StringBuffer();
            for(int i=ch.length-1;i>=0;i--) {
                sb.append(ch[i]+" ");
            }
            return sb.toString();
           
        }
     
    }

 

34. 題目背景

寫出一個(gè)程序,接受一個(gè)浮點(diǎn)數(shù)值,輸出該數(shù)值的近似整數(shù)值。如果小數(shù)點(diǎn)后數(shù)值大于等于5,向上取整;小于5,則向下取整

接口

int round(double d)

舉例

-4.5 四舍五入的結(jié)果是-4

4.4 四舍五入的結(jié)果是4

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 14:32:50
     */
    public class Demo34 {
        public static void main(String[] args) {
            double d = 3.65;
            System.out.println(round(d));
        }
        public static int round(double d) {
            String str = Double.toString(d);
            String subStr = str.substring(str.indexOf('.')+1, str.indexOf('.')+2);
            int a = Integer.parseInt(subStr);
            int res = 0;
            if(a <5) {
                res = (int)Math.floor(d);
            }else {
                res = (int)Math.ceil(d);
            }
            return res;
           
        }
     
    }

 

35.數(shù)列求和

編寫程序,輸入一個(gè)正整數(shù)n,求下列算式的值。要求定義和調(diào)用函數(shù)fact(k)計(jì)算k的階乘,函數(shù)返回值的類型是double。

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

輸出保留5位小數(shù)。

下面是一些合理的表達(dá)式的例子:

Input         5                

Output      1.71667   

    package com.xcbeyond;
     
    public class Demo35 {
        public static void main(String[] args) {
            System.out.println(resutl(5));
        }
       
        public static double resutl(int n) {
            double res = 0.0;
            int i = 1;
            while(i<=n) {
                res += (double)1.0/fack(i);
                i++;
            }
            return res;
           
        }
        public static int fack(int k) {
            int result = 0;
            if(k == 1) {
                result = 1;
            }else {
                result = fack(k-1)*k;
            }
               
            return result;
           
        }
     
    }

 

36. 計(jì)算整數(shù)各個(gè)數(shù)位之和

描述: 要求使用遞歸實(shí)現(xiàn),計(jì)算整數(shù)各個(gè)數(shù)位之和。

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

運(yùn)行時(shí)間限制: 無(wú)限制

內(nèi)存限制: 無(wú)限制

輸入: 0xff ff ff ff以內(nèi)的整數(shù)

輸出: NA

樣例輸入: 123

樣例輸出: 6

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 15:23:16
     */
    public class Demo36 {
        public static void main(String[] args) {
            int num = 123;
            System.out.println(bitSum(num));
        }
        public static int bitSum(int num) {
            int res = 0;
            if(num<10) {
                res = num;
            }else {
                res = num%10 + bitSum(num/10);
            }
            return res;
           
        }
    }

37.提取不重復(fù)的整數(shù)

描述: 輸入一個(gè)int型32位整數(shù),按照從右向左的閱讀順序,返回一個(gè)不含重復(fù)數(shù)字的新的整數(shù)。

運(yùn)行時(shí)間限制: 10 Sec

內(nèi)存限制: 無(wú)限制

輸入: 整數(shù),如9876673

注意:

1、整數(shù)最后的0,請(qǐng)忽略,例如:輸入1750,輸出:571

2、負(fù)數(shù),保留'-'在前面,例如:輸入-175,輸出:-571

輸出: 整數(shù),如37689

樣例輸入: 9876673

樣例輸出: 37689  

    package com.xcbeyond;
    /**
     *
     * @author xcbeyond
     * @date 2015/05/12 15:50:34
     */
    public class Demo37 {
        public static void main(String[] args) {
            int num = -12310;
            System.out.println(getConvertInt(num));
        }
        public static int getConvertInt(int num) {
            String str = String.valueOf(num);
            StringBuffer sb = new StringBuffer();
            boolean flg = true;
            if(str.charAt(0) == '-') {
                flg = false;
                sb.append(str.charAt(0));
            }
            if(str.charAt(str.length()-1) != '0') {
                sb.append(str.charAt(str.length()-1));
            }
            for(int i = str.length()-2;i>0;i--) {
                sb.append(str.charAt(i));
            }
            if(flg) {
                sb.append(str.charAt(0));
            }
            return Integer.parseInt(sb.toString());
           
        }
    }