第15天--算法(Leetcode 7,11,12,13)

7.整数反转

public int reverse(int x) {

        boolean isFu = x < 0 ? true : false;

        x = isFu ? x : -x;

        int res = 0;

        int M = Integer.MIN_VALUE / 10;

        int N = Integer.MIN_VALUE % 10;

        while(x != 0) {

            if(res < M || (res == M && x % 10 < N)) {

                return 0;

            }

            res = res * 10 + x % 10;

            x /= 10;

        }

        return isFu ? res : -res;

    }

11.盛水最多的容器

public int maxArea(int[] height) {

        int l = 0;

        int r = height.length - 1;

        int max = 0;

        while(l < r) {

            max = Math.max(max,Math.min(height[l],height[r]) * (r - l));

            if(height[l] > height[r]) {

                r --;

            }else {

                l ++;

            }

        }

        return max;

    }

12.整数转罗马数字

public String intToRoman(int num) {

        String[][] c = {

            {"","I","II","III","IV","V","VI","VII","VIII","IX","X"},

            {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","C"},

            {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","M"},

            {"","M","MM","MMM"}

        };

        StringBuilder sb = new StringBuilder();

        sb.append(c[3][num/1000]).append(c[2][num/100%10]).append(c[1][num/10%10]).append(c[0][num%10]);

        return sb.toString();

    }

13.罗马数字转整数

public int romanToInt(String s) {

        char s1[] = s.toCharArray();

        int arr[] = new int[s1.length];

        for(int i = 0;i < s1.length;i ++) {

            if(s1[i] == 'I') {

                arr[i] = 1;

            }else if(s1[i] == 'V') {

                arr[i] = 5;

            }else if(s1[i] == 'X') {

                arr[i] = 10;

            }else if(s1[i] == 'L') {

                arr[i] = 50;

            }else if(s1[i] == 'C') {

                arr[i] = 100;

            }else if(s1[i] == 'D') {

                arr[i] = 500;

            }else if(s1[i] == 'M') {

                arr[i] = 1000;

            }

        }

        int res = 0;

        for(int i = 0;i < arr.length;i ++) {

            if(i != arr.length - 1 && arr[i] < arr[i + 1]) {

                res -= arr[i];

            }else {

                res += arr[i];

            }

        }

        return res;

    }

posted @ 2021-12-22 14:53  现在开始努力  阅读(22)  评论(0)    收藏  举报