小v所在的公司即将举行年会,年会方案设计过程中必不可少的一项就是抽奖活动。小v在本次活动中被委以重任,负责抽奖活动的策划;为了让中奖的礼物更加精美且富有神秘感,打算采用礼品盒来包装奖品,此时小v发挥了自己的创意想捉弄一下获奖的同事,便采取了多重包装来包装奖品。
现给出一个字符串,并假定用一对圆括号( )表示一个礼品盒,0表示奖品,你能据此帮获奖者算出最少要拆多少个礼品盒才能拿到奖品吗?
一行字符串,仅有'('、')'、'0' 组成,其中一对'(' ')'表示一个礼品盒,‘0’表示奖品;输入的字符串一定是有效的,即'(' ')'一定是成对出现的。
输出结果为一个数字,表示小v要拆的最少礼品盒数量
(()(()((()(0)))))
5
(((0)))
3
private static int solution(String str) { // TODO Write your code here int count = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i)!='0'){ if (str.charAt(i)=='('){ count++; } if (str.charAt(i)==')'){ count--; } }else break; } return count; }
private static int solution(String str) { // TODO Write your code here int count = 0; for(int i = 0; i < str.length(); i++){ if(str.charAt(i) == '(') count ++; if(str.charAt(i) == ')') count --; if(str.charAt(i) == '0') break; } return count; }
import java.io.*; public class Main { 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) { StringBuffer s = new StringBuffer(str); while(s.indexOf("()") >= 0){ // 去掉所有连着成对的(),空礼盒不需要拆 int index = s.indexOf("()"); s.delete(index,index+2); } return s.length()-s.indexOf("0")-1; // 剩下的数0的左边或者右边的单括号数就行 } // ------------------------------------------------------------------------ }
#include<stdio.h> int main() { char c; int b=0,d=0; while((c=getchar())!='0') { if(c=='(') { b++; } if(c==')') { d++; } } printf("%d",b-d); }
阅读理解0分
在找到 "0" 之前,凡遇到成对的"()"表示一个完整的 空 盒子,可以丢掉,也可以拆开。如果选择丢掉,那么output是最小的拆盒子数。
sum++ 是说选择拆开一层包装,sum-- 说明 试着拆开后发现 这是成对的"()" 空盒子,不如不拆,可以丢掉,不计入最小的拆盒子数中
private static int solution(String str) { int sum = 0; for(int i=0;i<str.length();i++){ if(str.charAt(i)=='0'){ break; }else if(str.charAt(i)=='('){ sum++;//拆开一层包装 }else{ sum--;//"()"情况的盒子可以不用拆开,直接丢掉即可 } } return sum; }
import java.io.*; /** * Welcome to vivo ! */ public class Main { 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) { // TODO Write your code here char[] arr = str.toCharArray(); int count = 0; for(int i = 0; i < arr.length; i++){ if(arr[i] == '('){ count++; }else if(arr[i] == ')'){ count--; }else if(arr[i] == '0'){ return count; } } return 0; } }