笔试强训 day7

一、选择题

1、JAVA属于( )
A 操作系统
B 办公软件
C 数据库系统
D 计算机语言
他的回答: D (正确)
正确答案: D
参考答案:
计算机软件主要分为系统软件与应用软件两大类。系统软件主要包括操作系统、语言处理系统、数据库管理系统和系统辅助处理程序。应用软件主要包括办公软件和多媒体处理软件。Java是一门面向对象编程语言,属于计算机语言。故正确答案为D选项。
2、类声明中,声明抽象类的关键字是 ( )
A public
B abstract
C final
D class
他的回答: B (正确)
正确答案: B
3、在使用 interface 声明一个接口时,只可以使用()修饰符修饰该接口
A private
B protected
C private protected
D public
他的回答: D (正确)
正确答案: D
4、Math.round(11.5) 等于:()
A 11
B 11.5
C 12
D 12.5
他的回答: B (错误)
正确答案: C
round函数表示四舍五入。
5、以下对继承的描述错误的是()
A Java中的继承允许一个子类继承多个父类
B 父类更具有通用性,子类更具体
C Java中的继承存在着传递性
D 当实例化子类时会递归调用父类中的构造方法
他的回答: A (正确)
正确答案: A
6、在 java 中 , 一个类()
A 可以继承多个类
B 可以实现多个接口
C 在一个程序中只能有一个子类
D 只能实现一个接口
他的回答: B (正确)
正确答案: B
7、关于以下程序代码的说明正确的

class HasStatic{
private static int x = 100;
public static void main(String args[ ]){
HasStatic hs1 = new HasStatic();
hs1.x++;
HasStatic hs2 = new HasStatic();
hs2.x++;
hs1=new HasStatic();
hs1.x++;
HasStatic.x--;
System.out.println( "x=" +x);
}
}

A 5行不能通过编译,因为引用了私有静态变量
B 10行不能通过编译,因为x是私有静态变量
C 程序通过编译,输出结果为:x=103
D 程序通过编译,输出结果为:x=102
他的回答: D (正确)
正确答案: D
参考答案:
被static修饰的变量,只有一份
8、以下 _____ 不是 Object 类的方法
A clone()
B finalize()
C toString()
D hasNext()
他的回答: B (错误)
正确答案: D
D选项是iterator的方法
9、下面哪一项不是 java 类访问控制关键字
A public
B this
C private
D protected
他的回答: B (正确)
正确答案: B
10、java 语言使用的字符码集是
A ASCII
B BCD
C DCB
D Unicode
他的回答: A (错误)
正确答案: D
参考答案:
ASCII:特殊字符,大小写字母,数字;BCD是对数字;Unicode是对Java的

二、编程题

**【Fibonacci数列】**Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可
以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
输入描述:
输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出描述:
输出一个最小的步数变为Fibonacci数
示例1:
输入
15
输出
2
【解题思路】:
本题可以通过先找到距离N最近的两个Fibonacci数,这两个数分别取自距离N的最近的左边一个数L和右边一个数R,然后通过min(N - L, R - N)找到最小步数。

牛客网ACM模式代码

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int  n=sc.nextInt();
        int f1=0;
        int f2=1;
            while(f2<n){
              int f3=f1+f2 ;
                f1=f2;
                f2=f3;
                
            }
       int min=Math.min(n-f1,f2-n);
        System.out.print(min);
    }
}

【合法括号序列判断】
给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。
测试样例:
“(()())”,6
返回:true
测试样例:
“()a()()”,7
返回:false
“()(()()”,7
返回:false
【解题思路】:
用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。
1、存储遍历过的左括号
2、最先遍历的左括号最后匹配,最后遍历到左括号最先匹配
如何判断:
1、如果字符串的长度不为偶数,直接返回false
2、当长度为偶数,遍历字符串,遇到左括号入栈,遇到右括号,看栈顶元素是否为左括号,如果是左括号出栈,继续遍历。当字符串遍历结束,如果栈为空,那么字符串就是一个合法的括号,返回true
3、如果遍历到非括号的字符,直接返回法false。

牛客网核心代码模式

import java.util.*;

public class Parenthesis {
    public boolean chkParenthesis(String A, int n) {
        if(n%2!=0){
            return false;
        }
        Stack<Character> stack=new Stack<>();
        for(char x:A.toCharArray()){
            if(x=='('){
                stack.push(x);
            }else if(x==')'){
                if(stack.isEmpty()){
                    return false;
                }else if(stack.peek()=='('){
                    stack.pop();
                }
            }else{
                return false;
            }
        }
         return stack.isEmpty();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值