【Java笔试强训】Day7(WY22 Fibonacci数列、CM46 合法括号序列判断)

Fibonacci数列

链接:Fibonacci数列

题目:

Fibonacci数列是这样定义的:
F0 = 0
F1 = 1
for each i ≥ 2: Fi = Fi-1 + Fi-2
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。

题目分析:

代码实现:

java 复制代码
package Day7;

import java.util.Scanner;

public class Day7_1 {
    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 = f1+f2;
            f1 = f2;
            f2 = f3;
        }
        int min = Math.min(n-f1,f2-n);
        System.out.println(min);
    }
}

合法括号序列判断

链接:合法括号序列判断

题目:

给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)

题目分析:

用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配

代码实现:

java 复制代码
package Day7;

import java.util.Stack;

public class Day7_2 {
    public boolean chkParenthesis(String a,int b) {
        if (b % 2 != 0) {
            return false;
        }
        Stack<Character> stack=new Stack<>();
        for(char c:a.toCharArray()) {
            if (c == '('){
                stack.push(c);
            } else if (c == ')') {
                if (stack.isEmpty()) {
                    return false;
                } else if (stack.peek() == '(') {
                    stack.pop();
                }
            }else {
                return false;
            }
        }
        return stack.isEmpty();
    }
}
相关推荐
Refrain_zc33 分钟前
Android 音视频通话核心 —— 音频编码(AAC)完整解析
java
xiaoshuaishuai843 分钟前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#
Xin_ye1008644 分钟前
C# 零基础到精通教程 - 第十八章:部署与发布——让应用上线
开发语言·c#
我是唐青枫1 小时前
Java JdbcTemplate 实战指南:用 Spring 轻量完成数据库增删改查
java·数据库·spring
思麟呀1 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
Lumbrologist1 小时前
【C++】零基础入门 · 第 13 节:类与对象基础
java·c++·算法
码不停蹄的玄黓2 小时前
Java 生产者-消费者模型详解
java·开发语言·python
爱讲故事的2 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#
笨蛋不要掉眼泪2 小时前
Java并发编程:Executors框架类深度解析
java·开发语言·并发
南极企鹅2 小时前
深入理解 MVCC:数据库并发控制的基石
java·数据库·mysql