1、最小步数使N变为斐波那契数
题目描述:
代码:
//1:最小步数使N变为斐波那契数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a = 0;
int b = 1;
while(b < n){
int tmp = a + b;
a = b;
b = tmp;
}
System.out.print((b-n)>(n-a)?n-a:b-n);
}
}
2.合法括号序列判断
题目描述:
思路:使用栈结构解决
1.将“(”入栈,碰到")“弹出栈顶的”(",如果此时栈为空,则返回false
2.碰到其他内容直接返回false
3.字符串结尾时,栈非空返回false
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
Stack<Character> lefts=new Stack<Character>();
if (A==null||A.length()!=n){
return false;
}
for (int i=0;i<n;i++){
if(A.charAt(i)=='('){
lefts.push(A.charAt(i));
}else if(A.charAt(i)==')'){
if(lefts.isEmpty()){
return false;
}else {
lefts.pop();
}
}else{
return false;
}
}
if(!lefts.isEmpty()){
return false;
}else {
return true;
}
}
}