华为Java面试题

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


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




package com.xcbeyond;  

  

/** 

 * @author xcbeyond 

 * 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);  

    }  

  

}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcbeyond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值