java面試阿里第1期--代碼面(1)選擇排序(2)判斷二進制裏1的個數(3)輸入String判斷是不是ipv4地址

1.選擇排序

import java.util.Arrays;
public class TestSelectSort {
    //測試選擇排序
    public static void selectSort(int[]arr){
        for(int i=0;i<arr.length-1;i++){
           int index=i; //排序位置
            //找出每輪最小的值
            for(int j=i+1;j<arr.length;j++){
                if(arr[j]<arr[index]){
                    index=j;//當前比較中最小的值下標索引
                }
            }
            //每輪比較完成,進行交換
            int temp=arr[i];
            arr[i]=arr[index];
            arr[index]=temp;
        }
        System.out.println(Arrays.toString(arr));
    }

    public static void main(String[] args) {
        int [] arr = {49,38,65,97,76,13,27,49};
        selectSort(arr);
    }
}


2.判斷二進制裏1的個數

1. 使用移位操作符(右移操作)
讓二進制的每一位&(邏輯與)1,如果得到的結果爲數字“1”,則二進制數該位有一個“1”。

public class TestCount1 {
    public static void main(String[] args) {
        int num=7;//要計算1的個數的數字
        int count=0;//計數器
        while(num>0){
            if((num&1)==1){
                count++;
            }
            num=num>>1;
        }
        System.out.println(count);
    }
}

2.最高效算法(推薦)

讓我們要計算的數與該數減一 進行&運算,當計算結果爲0時,程序結束。

public class TestCount1 {
    public static void main(String[] args) {
        int num=7;//要計算1的個數的數字
        int count=0;//計數器

        while(num>0){
            num=num&(num-1);
            count++;
        }
        System.out.println(count);
    }
}

3.輸入String判斷是不是ipv4地址

如果有讀者不知道什麼是ipv4,請參考鏈接: https://baike.baidu.com/item/IPv4/422599?fr=aladdin

public class TestIPV4 {

    public static boolean isIpv4(String str){
        if(str==null||str.length()==0) return false;
        //對字符串進行分割
        String[] split = str.split("\\.");
        //ipv4必須符合192.168.43.157這種格式
        if(split.length!=4) return false;
        for(int i=0;i<split.length;i++){
            int n=Integer.parseInt(split[i]);
            //ipv4地址取值範圍爲0-255
            if(n<0||n>255) return false;
        }
        return true;
    }
    public static void main(String[] args) {
        String str="192.168.43.157";
        boolean ipv4 = isIpv4(str);
        System.out.println(ipv4);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章