栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java简单练习题(一)含答案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java简单练习题(一)含答案

1.给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成;
如果可以返回true,否则返回false;
magazine中的每个字符只能在ransomNote中使用一次
// 比较好理解 
public static boolean canConstruct(String ransomNote ,String magazine){
        String str = "abcdefghijklmnopqrstuvwxyz";
        char[] strarr = str.toCharArray();
        if (ransomNote.length()>magazine.length()){
            return false;
        }
        char[] mag = magazine.toCharArray();
        char[] ran = ransomNote.toCharArray();
        int countMag = 0;
        int countRan = 0;
        for (int i = 0;i< strarr.length;i++){
            for(int l=0;l
                if(mag[l]==strarr[i])
                    countMag++;
            }
            for(int j=0;j
                if(ran[j]==strarr[i])
                    countRan++;
            }
            if(countMag
                return false;
            }
        }
           return true;
    }

另一种解法是我在网上看到的,我在代码里写了注释cnt[c-'a']++的用法。
    public static boolean canConstruct(String ransomNote ,String magazine){
        //字符串magazine="baa";
        if(ransomNote.length() > magazine.length()) {
            return false;
        }

        int[] cnt = new int[26]; //cnt=[0,0,0,`````,0] 26个零

        for(char c : magazine.toCharArray()) {//[b,a,a]
            cnt[c - 'a'] ++;
            //第一次循环c=b时,cnt[1]++ 结果[0,1,0,`````,0],第二次循环c=a时,cnt[0]++ 结果[1,1,0,`````,0],
            //第三次循环c=a时cnt[0]++ 结果[2,1,0,`````,0]
        }
        for(char c : ransomNote.toCharArray()) {
            cnt[c - 'a'] --;
            if(cnt[c - 'a'] < 0) {
                return false;
            }
        }
        return true;
2.设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。(如果没有“或者其他运算符“这个条件 可以return负负得正)
public static int add(int a,int b ){
        while (b != 0) {
            int num = a ^ b;
            int carry = (a & b) << 1;
            a = num;
            b = carry;
        }
        return a;
    }
3.Fizz Buzz
        游戏规则如下:从1开始往上数数,当遇到3的倍数的时候,说fizz,
        当遇到5的倍数,说buzz,当遇到15的倍数,就说fizzbuzz,其他情况则正常数数
    public static List fizzBuzz(int n ){
        List list = new ArrayList<>();
        for (int i = 1;i<=n;i++){
            list.add(String.valueOf(i));
                if (i%3==0){
                    list.remove(i-1);
                    list.add("Fizz");
                }
                if (i%5==0){
                    list.remove(i-1);
                    list.add("Buzz");
                }
                if (i%15==0){
                    list.remove(i-1);
                    list.add("FizzBuzz");
                }
        }
        return list;
    }
4.二维数组题
输入              输出
            1 2 3            1 4 7
            4 5 6            2 5 8
            7 8 9            3 6 9  
        int arr[][] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};

        for(int i =0;i< arr.length-1;i++){//0,1,2
            for (int l =1;l
                int x = arr[l][i];//1.0
                arr[l][i] = arr[i][l];
                arr[i][l] = x;
            }
        }
        for(int i =0;i< arr.length;i++){
            for (int l =0;l
                System.out.print(arr[i][l]);
            }
            System.out.println();
        }
5.计算数组的动态和;例:array = {1,2,3,4}; 输出{1,3,6,10};解析:[1,1+2,1+2+3,1+2+3+4]
    public static void main (String[] args){
        //计算数组的动态和
        //公式 runningSum[i] = sum[nums[0]....nums[i]]
        int[] nums = {1,2,3,4};
        int[] sum = runningSum(nums);
        for (int i :sum){
            System.out.println(i);
        }
    }
    public static int[] runningSum(int[] nums){
        for (int i = 1;i<= nums.length-1;i++){
            nums[i] += nums[i-1];
        }
        return nums;
    }
6.给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。
但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案
public static void main(String[] args){
        int[] arr ={1,3,4,2};
        for (int i :twoSum(arr,6)){
            System.out.println(i);
        }
    }
    public static int[] twoSum(int[] nums,int target){
        boolean f = false;
        int[] arr = new int[2];
        for (int i =0;i< nums.length;i++){
            if (f==false){
                for (int l = i+1;l< nums.length;l++){
                    if (nums[i]+nums[l]==target){
                        arr[0]=i;
                        arr[1]=l;
                        f = true;
                    }
                }
            }
        }
        return arr;
    }
7.回文数;给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
    public static boolean isPalindrome(int x){
        String str = String.valueOf(x);
        String[] arrstr = str.split("");
        for (int i = 0;i
            if (!arrstr[i].equals(arrstr[arrstr.length-i-1])){
                return false;
            }
        }
        return true;
    }
//数学解法
    public static boolean isPalindrome(int x){
        if (x<0){
            return false;
        }
        int i = 0;
        int num = x;
        while (num != 0){
            i = i * 10+ num % 10;
            num /= 10;
        }
        return i == x;
}
8.给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。
 public static char findTheDifference(String s,String t){
        String st = s+t;
        String[] str = st.split("");
        String[] arr = new String[st.length()];
        Random random = new Random();
        for (int i = 0;i< str.length;i++){
            int x = random.nextInt(str.length);
            arr[i] = str[x];
            for (int l = 0;l< i;l++){
                if (arr[l]==arr[i]){
                    i--;
                    break;
                }
            }
        }
        char a =' ';
        for (int i = 0 ;i< arr.length;i++){
            if (t.equals(arr[i])){
              a = t.charAt(0);
            }
        }
	return a;

//第二种解法
           if (s.length()==0||" ".equals(s)){
               return t.charAt(0);
           }
           int[] cnt = new int[26];
           for (char c : s.toCharArray()){
               cnt[ c - 'a']++;
           }
           for (char c : t.toCharArray()){
               cnt[ c - 'a']--;
               if (cnt [ c - 'a']<0){
                   return c;
               }
           }
        return ' ';
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1038971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号