刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

导读:本篇文章讲解 刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

选择题模块

1. 以下对继承的描述错误的是(A)

2. 在Java中,一个类(B)

3. 以下不是Object 类的方法的是(D)

 4. Test.main() 函数执行后的输出是(D)

编程题模块

1.Fibonacci数列   

2.合法括号序列判断

3.两种排序方法                 

4.求最小公倍数


 

选择题模块

1. 以下对继承的描述错误的是(A

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

A:一个子类只能继承一个父类(接口:一个类可以实现多个接口)

2. 在Java中,一个类(B

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

这道题和上面的题师出同门。

3. 以下不是Object 类的方法的是(D

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

这道题我们可以看一下Object的源码,可以看出hasNext不是Object里面的方法,而是迭代器Iterator的方法。

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

 4. Test.main() 函数执行后的输出是(D)

public class Test {
        public static void main(String [] args){
            System.out.println(new B().getValue());
        }
        static class A{
            protected int value;
            public A(int v) {
                setValue(v);
            }
            public void setValue(int value){
                this.value = value;
            }
            public int getValue(){
                try{
                    value++;
                    return value;
                } catch(Exception e){
                    System.out.println(e.toString());
                } finally {
                    this.setValue(value);
                    System.out.println(value);
                }
                return value;
            }
        }
        static class B extends A{
            public B() {
                super(5);
                setValue(getValue() - 3);
            }
            public void setValue(int value){
                super.setValue(2 * value);
            }
        }
    }

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

考查点:继承+方法重写

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

 

编程题模块

1.Fibonacci数列   

题目描述

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

思路分析 

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】 

 代码实现

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNextInt()) {
                int N = scanner.nextInt();
                int[] arr = new int[47];
                arr[0] = 0;
                arr[1] = 1;
                for (int i = 2; i < 47; i++) {
                    arr[i] = arr[i - 1] + arr[i - 2];
                }
                for (int i = 0; i < 47; i++) {
                    if (N == arr[i]) {
                        System.out.println(0);
                        break;
                    } else {
                        min(N, arr);
                        break;
                    }
                   
                }
            }
        }
        private static void min(int N, int[] arr) {
            int min = 0;
            for (int i = 2; i < 47; i++) {
                if (N > arr[i] && N < arr[i + 1]) {
                    min = (N - arr[i]) < (arr[i + 1] - N) ? (N - arr[i]) : (arr[i + 1] - N);
                }
            }
            System.out.println(min);
        }
    }

上面这个是我的思路解出来的,看到了有大佬是这样做的,很强。

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {        public static void main(String[] args) {            Scanner scanner = new Scanner(System.in);            int n =scanner.nextInt();            int f1 = 0;            int f2 = 1;            while(f2<n){                int f3 = f2+f1;                f1=f2;                f2= f3;            }            //循环结束 f1<n<=f2            int min = Math.min(n-f1,f2-n);            System.out.println(min);//两行代码解决问题        }    }

 

2.合法括号序列判断

题目描述

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

思路分析

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

 

代码实现 

import java.util.*;



public class Parenthesis {

    public boolean chkParenthesis(String A, int n) {

        // Stack<Character> stack = new Stack<>();

        // char[] array = A.toCharArray();



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

        //     if (array[i] == '(') {

        //         stack.push(array[i]);

        //     } else if (array[i] == ')') {

        //         if (stack.isEmpty()) {

        //             return false;

        //         } else if (stack.peek() == '(') {

        //             stack.pop();

        //         } else {

        //             return false;

        //         }



        //     }

        // }

        // return stack.isEmpty();



        if (n % 2 != 0) {

            return false;

        }

        Stack<Character> stack = new Stack<>();

        char[] array = A.toCharArray();

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

                if(array[i] == '('){

                    stack.push(array[i]);

                }else  if (array[i] == ')'){

                    if(stack.isEmpty()){

                        return false;

                    }else if(stack.peek() == '('){

                        stack.pop();

                    }else{

                        return false;

                    }

                }

        }

        return stack.isEmpty();

    }

}

 

3.两种排序方法                 

题目描述

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

思路分析

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

 

代码实现 

import java.util.Scanner;import java.io.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {    public static void main(String[] args) throws Exception {        //BufferReader 从字符流中读取文本并且缓存        BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));        int n = Integer.parseInt(bi.readLine());        String[] str = new String[n];        for (int i = 0; i < n; i++) {            str[i] =  bi.readLine();        }        //判断        if (isSortLength(str) && isSortZiDian(str)) {            System.out.println("both");        } else if (isSortLength(str)) {            System.out.println("lengths");        } else if (isSortZiDian(str)) {            System.out.println("lexicographically");        } else {            System.out.println("none");        }    }    //字典序    public static boolean isSortZiDian(String[] str) {        for (int i = 0; i < str.length - 1; i++) {            //用当前字符串和后一个字符串比较,如果字典序大于后一个,说明排序混乱,直接返回false            if (str[i].compareTo(str[i + 1]) > 0) {                return false;            }        }        return true;    }    //长度序    public static boolean isSortLength(String[] str) {        for (int i = 0; i < str.length - 1; i++) {            //如果当前字符串长度大于后一个字符串长度,说明排序混乱,返回false            if (str[i].length() > str[i + 1].length()) {                return false;            }        }        return true;    }}//****重点//代码中使用compareTo方法//用来比较大小的   a.compareTo(b)  如果a比b大输出1 a=b输出0 a比b小输出-1

4.求最小公倍数

题目描述

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】 

思路分析

刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

 

代码实现

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        while (scanner.hasNextInt()) {            int A = scanner.nextInt();            int B = scanner.nextInt();            System.out.println((A*B)/bigNum(A, B));        }    }    //最大公约数    private static int bigNum(int a, int b) {        if (a == b) {            return a;        }        if(a<b){            int tmp = a;            a=b;            b=tmp;        }        int r;        while((r=a%b)>0){            a=b;            b=r;        }        return b;        }}     

我自己还有一种解法,仅供大家参考>>>

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        while (scanner.hasNextInt()) {            int A = scanner.nextInt();            int B = scanner.nextInt();            System.out.println(smallNum(A, B));            //System.out.println((A*B)/bigNum(A, B));        }    }    private static int smallNum(int a, int b) {//最小公倍数        for (int i = 1; i < a * b; i++) {            if (i % a == 0 && i % b == 0) {                return i;            }        }        return a * b;    }}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/119537.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!