【百日冲大厂】第七篇,牛客网选择题+编程题Fibonacci数列+合法括号序列判断

前言:
大家好,我是良辰丫,刷题的第七篇,牛客网选择题+编程题Fibonacci数列+合法括号序列判断,很喜欢那种通过一点点的努力,然后感受到自己正在慢慢进步的感觉。就像爬山一样,随着跟山顶的距离逐渐拉近,看到的风景也越来越美,内心更是越发欢愉。其实无论离山顶有多远,人总归应该多看些这种风景的。💞💞💞

🧑个人主页:良辰针不戳
📖所属专栏:百日冲大厂
🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
💦期待大家三连,关注,点赞,收藏。
💌作者能力有限,可能也会出错,欢迎大家指正。
💞愿与君为伴,共探Java汪洋大海。

在这里插入图片描述

1. 选择题

在这里插入图片描述

java是一种编程语言,此选项选择计算机语言.

在这里插入图片描述

  • public是访问权限修饰限定符,表示共有的.
  • abstract是抽象类的关键字.
  • final表示最终类,它修饰的变量为常量,修饰的类为最终类,不可被继承.修饰的方法不可被重写.
  • class是类的关键字.

在这里插入图片描述

接口是为了被实现,因此需要使用public,特殊记忆一下.

在这里插入图片描述

round方法表示四舍五入.

在这里插入图片描述

java不支持多继承,但是接口可以多次被实现.

在这里插入图片描述

  • java不支持多继承.
  • 一个类可以实现多个接口.
  • 父类可以派生多个子类,但是一个子类不可以继承多个父类.
  • 一个类可以实现多个接口.

在这里插入图片描述

静态成员属于类,所有对象共享它的内容.

在这里插入图片描述

hasNext方法属于迭代器iterator.

在这里插入图片描述

this指向类的一个实例,是一个对象属性.

在这里插入图片描述

  • ASCII包括特殊字符,0-9,大小写字母
  • BCD包含数字.
  • java的字符码集是Unicode,大家特殊记忆一下.

2. 编程题

2.1 Fibonacci数列

做题链接:
链接: Fibonacci数列

题目描述:

在这里插入图片描述

做题思路:
先搞懂题,咱们举一个数字,假设N为7,7前面的斐波那契数为5,7后面的斐波那契数为8.7到8只需要加1,7到5需要减2,那么7最少需要1步变成斐波那契数.

  • 看到上面,想必大家已经了解了题意,那么,要想找到最小步,需要找到N左边和右边的斐波那契数.
  • N-left与right-N进行比较,结果最小的即为最小步.
  • 那么N正好与斐波那契数相同呢?这种情况咱们可以包含在right中,比较方便,包含在左边其实也行.
  • 我们学习了一种循环的方式,找斐波那契数,这道题如果采用递归很难做出来.
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int a = 0;
        int b = 1;
        int c = 1;
        while(n > b){
            c = a+b;
            a = b;
            b = c;
        }
        int min = Math.min(n-a,b-n);
        System.out.println(min);        
    }
}

2.2 合法括号序列判断

做题链接:
链接:合法括号序列判断

题目描述:

在这里插入图片描述

做题思路:
做题,先读懂题意,然后找合适的方法,才能"对症下药",这道题看起来有些复杂,其实找到了方法,并没有大家想象的那么难.

  • 左右括号进行匹配,最先遍历的左括号最后与右括号匹配.咿呀,一句点醒梦中人.这不是我们所学的数据结构栈嘛?
  • 只能偶数个括号进行匹配,如果括号个数不是偶数,我们直接返回错误.
  • 定义一个栈的数据结构,开始我们的遍历之旅.
  • 在这里,我们需要考虑栈是否为空,栈为空的时候,我们弹出元素的时候就会产生异常.
  • 我们让左括号进栈.
  • 匹配到右括号的时候,看栈里是否有左括号进行匹配.如果有,弹出栈中的一个左括号.
  • 如果遍历到非括号的字符,直接返回false.
  • 遍历完毕后,如果栈为空,说明括号匹配成功,反之,匹配失败.
   public boolean chkParenthesis(String A, int n) {
        // write code here
        if(n % 2 == 1){
            return false;
        }
        Stack<Character> stack = new Stack<>();
        for(int i = 0;i<A.length();i++){
            char ch = A.charAt(i);
            if(ch =='('){
                stack.push(ch);
            } else if(ch == ')'){
                if(stack.empty()){
                    return false;
                }
                if(stack.peek() == '('){
                    stack.pop();
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }
        return stack.empty();
    }
  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

良辰针不戳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值