• java 程序算法题-面试笔试题(二)


    /**
         * 求某两个数的最大公因数和最小公倍数
         */
        @Test
        public void testMaxYinshu() {
            int a = 36;
            int b = 16;
            int x = a;
            int y = b;
            if (x < y) {
                int k = y;
                y = x;
                x = k;
            }
            while (y != 0) {
                if (x == y) {
                    break;
                }
                int k = y;
                y = x % y;
                x = k;
            }
            System.out.println(a + "和" + b + "最大公因数是:" + x);
            System.out.println(a + "和" + b + "最小公倍数是:" + a * b / x);
        }
    
        @Test
        public void testCountString() {
            String s = "HHhh  hhhh 123&&";
            int a = 0;
            int b = 0;
            int c = 0;
            int d = 0;
            int e = 0;
            char[] chars = s.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                //判断是否是数字
                if (Character.isDigit(chars[i])) {
                    a++;
                    //判断是否是字母
                } else if (Character.isLetter(chars[i])) {
                    //判断是否是大写字母
                    if (Character.isUpperCase(chars[i])) {
                        b++;
                    } else {
                        e++;
                    }
                    //判断是否是空格
                } else if (Character.isSpaceChar(chars[i])) {
                    c++;
                } else {
                    d++;
                }
            }
            System.out.println("数字个数:" + a);
            System.out.println("大写字母个数:" + b);
            System.out.println("小写字母个数:" + e);
            System.out.println("空格个数:" + c);
            System.out.println("特殊个数:" + d);
        }
    
        /**
         * 实现3+33+333+3333+...位数由循环次数决定
         */
        @Test
        public void testAddCount() {
            int a = 3;
            int b = a;
            int sum = a;
            for (int i = 0; i < 2; i++) {
                a = (a * 10) + b;
                System.out.println(a);
                sum = sum + a;
            }
            System.out.println(sum);
        }
    
        /**
         * 二分查找
         */
        @Test
        public void testBinarySerach() {
            int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 34, 56, 78, 90};
            int low = 0;
            int hight = ints.length - 1;
            while (low <= hight) {
                int mid = (low + hight) / 2;
                if (ints[mid] == 12) {
                    System.out.println(ints[mid]);
                    break;
                } else if (ints[mid] < 12) {
                    low = mid + 1;
                } else {
                    hight = mid - 1;
                }
            }
    
        }
    /**
    * 求某两个数的最大公因数和最小公倍数
    */
    @Test
    public void testMaxYinshu() {
    int a = 36;
    int b = 16;
    int x = a;
    int y = b;
    if (x < y) {
    int k = y;
    y = x;
    x = k;
    }
    while (y != 0) {
    if (x == y) {
    break;
    }
    int k = y;
    y = x % y;
    x = k;
    }
    System.out.println(a + "和" + b + "最大公因数是:" + x);
    System.out.println(a + "和" + b + "最小公倍数是:" + a * b / x);
    }

    @Test
    public void testCountString() {
    String s = "HHhh hhhh 123&&";
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    int e = 0;
    char[] chars = s.toCharArray();
    for (int i = 0; i < chars.length; i++) {
    //判断是否是数字
    if (Character.isDigit(chars[i])) {
    a++;
    //判断是否是字母
    } else if (Character.isLetter(chars[i])) {
    //判断是否是大写字母
    if (Character.isUpperCase(chars[i])) {
    b++;
    } else {
    e++;
    }
    //判断是否是空格
    } else if (Character.isSpaceChar(chars[i])) {
    c++;
    } else {
    d++;
    }
    }
    System.out.println("数字个数:" + a);
    System.out.println("大写字母个数:" + b);
    System.out.println("小写字母个数:" + e);
    System.out.println("空格个数:" + c);
    System.out.println("特殊个数:" + d);
    }

    /**
    * 实现3+33+333+3333+...位数由循环次数决定
    */
    @Test
    public void testAddCount() {
    int a = 3;
    int b = a;
    int sum = a;
    for (int i = 0; i < 2; i++) {
    a = (a * 10) + b;
    System.out.println(a);
    sum = sum + a;
    }
    System.out.println(sum);
    }

    /**
    * 二分查找
    */
    @Test
    public void testBinarySerach() {
    int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 34, 56, 78, 90};
    int low = 0;
    int hight = ints.length - 1;
    while (low <= hight) {
    int mid = (low + hight) / 2;
    if (ints[mid] == 12) {
    System.out.println(ints[mid]);
    break;
    } else if (ints[mid] < 12) {
    low = mid + 1;
    } else {
    hight = mid - 1;
    }
    }

    }
  • 相关阅读:
    Leetcode 122. 买卖股票的最佳时机 II
    Leetcode 121. 买卖股票的最佳时机
    Leetcode 205. 同构字符串
    Leetcode 875. 爱吃香蕉的珂珂
    Leetcode 921. 使括号有效的最少添加
    Leetcode 238. 除自身以外数组的乘积
    评论设置----第二章:创建和管理内容
    其它内容选项----第二章:创建和管理内容
    预览和全展示----第二章:创建和管理内容
    Drupal的主题----第一章:Drupal的介绍
  • 原文地址:https://www.cnblogs.com/blackCatFish/p/13597384.html
Copyright © 2020-2023  润新知