vivo校招2020笔试题及答案

题目描述:
一行字符串,仅有 ()0、组成,其中一对 ( ) 表示一个礼品盒,0表示奖品,输入的括号一定是成对出现的。
输出:
结果是要拆的最少礼品盒的数量。
示例1:
输入:(()(()((()(0)))))
输出:5
示例2:
输入:(((0)))
输出:3

我用栈做的,只过了90%,不知道剩下的10%是什么情况

package com.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Test4 {

	public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String inputStr = br.readLine();
        int output = solution(inputStr );
        System.out.println(output);
    }

    private static int solution(String str) {
		Stack<Character> stack = new Stack<Character>();
		int num=0;
		for(int i=0; i<str.length(); i++) {
			if(str.charAt(i) == ')') {
				if(stack.peek() == '(') {
					stack.pop();
				}else if(stack.peek() == '0') {
					stack.pop();
					stack.pop();
					stack.push('0');
					num++;
				}
			}else {
				stack.push(str.charAt(i));
			}
		}
		//System.out.println(stack);
    	return num;
    	
    }
}

你可能感兴趣的:(编程题)