【九度】題目1342:尋找最長合法括號序列II(25分)
題目地址:http://ac.jobdu.com/problem.php?pid=1342
題目描述:
假如給你一個由’(‘和’)’組成的一個隨機的括號序列,當然,這個括號序列肯定不能保證是左右括號匹配的,所以給你的任務便是去掉其中的一些括號,使得剩下的括號序列能夠左右括號匹配且長度最長,即最長的合法括號序列。
輸入:
測試資料包括多個,每個測試資料只有一行,即一個隨機的括號序列,該括號序列的長度保證不超過106。
輸出:
對於每個測試案例,輸出一個整數,表示最後剩下的最長合法括號序列長度。
樣例輸入:
(())()
(()
樣例輸出:
6
2
答疑:
解題遇到問題?分享解題心得?討論本題請訪問:http://t.jobdu.com/thread-8065-1-1.html
解題思路:
這個是校驗括號是否匹配,這個很簡單,用棧去模擬。發現是左括號就入棧,發現是右括號,而且和左括號匹配就出棧。
同時,總長度+2。掃描一遍結束就是答案。
Java AC
import java.util.Scanner; import java.util.Stack; public class Main { /* * 1342 */ public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String a = scanner.next(); char array[] = a.toCharArray(); int num = 0; Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < array.length; i++) { if (array[i] == '(') { stack.push(array[i]); }else if (array[i] == ')' && !stack.isEmpty()){ stack.pop(); num += 2; } } System.out.println(num); } } } /************************************************************** Problem: 1342 User: wzqwsrf Language: Java Result: Accepted Time:940 ms Memory:40184 kb ****************************************************************/
C++ AC
#include <stdio.h> #include <stack> #include <string> #include <string.h> using namespace std; const int maxn = 1000002; char input[maxn]; int main(){ int n,i; while(scanf("%s",input) != EOF){ n = strlen(input); stack<int> symStack; int maxLen = 0; for(i = 0 ; i < n; i++){ if(input[i] == '('){ symStack.push(i); }else if(input[i] == ')' && !symStack.empty()){ symStack.top(); symStack.pop(); maxLen += 2; } } printf("%d\n",maxLen); } return 0; } /************************************************************** Problem: 1342 User: wangzhenqing Language: C++ Result: Accepted Time:40 ms Memory:2028 kb ****************************************************************/
相關推薦
【九度】題目1342:尋找最長合法括號序列II(25分)
題目地址:http://ac.jobdu.com/problem.php?pid=1342 題目描述: 假如給你一個由’(‘和’)’組成的一個隨機的括號序列,當然,這個括號序列肯定不能保證是左右括號匹配的,所以給你的任務便是去掉其中的一些括號,使得剩下的括號序列能夠左右括號
九度 題目1337:尋找最長合法括號序列
題目描述: 給你一個長度為N的,由’(‘和’)’組成的括號序列,你能找出這個序列中最長的合法括號子序列麼?合法括號序列的含義便是,在這個序列中,所有的左括號都有唯一的右括號匹配;所有的右括號都有唯一的左括號匹配。例如:((()))()()便是一個長度為10的合法括號序列,而
【九度】題目1001:A+B for Matrices
題目描述: This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns. 輸入
【LeetCode】Longest Palindromic Substring && 【九度】題目1528:最長迴文子串(騰訊2013年實習生招聘二面面試題)
Longest Palindromic Substring Total Accepted: 4808 Total Submissions: 23151 My Submissions Given a string S, fi
【九度】題目1047:素數判定
:1 秒記憶體限制:32 兆特殊判題:否提交:6455解決:2938題目描述: 給定一個數n,要求判斷其是否為素數(0,1,負數都是非素數)。輸入: 測試資料有多組,每組輸入一個數n。輸出: 對於每組輸入,若是素數則輸出yes,否則輸入no。樣例輸入: 13樣例輸出: ye
【LeetCode】Remove Nth Node From End of List && 【九度】題目1517:連結串列中倒數第k個結點
Total Accepted: 8400 Total Submissions: 28316 Given a linked list, remove the nth node from the end of list and return its h
【九度】題目1090:路徑列印 && 【LeetCode】Simplify Path
時間限制:1 秒記憶體限制:32 兆特殊判題:否提交:1319解決:230 題目描述: 給你一串路徑,譬如: a\b\c a\d\e b\cst d\ 你把這些路徑中蘊含的目錄結構給畫出來,子目錄直接列在父目錄下面,並比父目錄向右縮一格,就像這樣: a b c
【九度】題目1006:ZOJ問題
題目描述: 對給定的字串(只包含'z','o','j'三種字元),判斷他是否能AC。 是否AC的規則如下: 1. zoj能AC; 2. 若字串形式為xzojx,則也能AC,其中x可以是N個'o' 或者為空; 3. 若azbjc 能AC,則azbojac也能AC,其中a,b,
【九度】題目1521:二叉樹的映象
時間限制:1 秒記憶體限制:128 兆特殊判題:否提交:1026解決:265題目描述: 輸入一個二叉樹,輸出其映象。輸入: 輸入可能包含多個測試樣例,輸入以EOF結束。 對於每個測試案例,輸入的第一行為一個整數n(0<=n<=1000,n代表將要輸入的二叉樹節
尋找最長合法括號序列九度0J
#include<stdlib.h> #include<stdio.h> #include<string.h> main() {char str[1024] = {0};int left = 0, right = 0, count =
最長合法括號序列:棧(括號題)
題目描述 這是另一道處理合法括號序列的題目。 我們應該提醒你,如果一個括號序列插入“+”和“1”後,可以得到一個正 確的數學表示式,那麼它被稱為“合法”的。 例如,序列“(())()”,“()”和“(()(()))”是合法的,但“)(”,“(()”和“(()))
九度oj 題目1001:A+B for Matrices 【ZJU2011考研機試題1】
題目1001:A+B for Matrices 時間限制:1 秒 記憶體限制:32 兆 特殊判題:否 提交:11539 解決:4694 題目描述: This time, you are supposed to find A+B where
九度OJ 題目1204:農夫、羊、菜和狼的故事
pla pan wol 題目 r+ ear play struct tab 思路:廣度 優先 記錄路徑長度 但是題目的意思好像是要記錄具體路徑 下次再搞吧 題目描述: 有一個農夫帶一只羊、一筐菜和一只狼過河.果沒有農夫看管,則狼要吃羊,羊要吃菜.但是船很小,只
九度OJ-題目1009:二叉搜索樹
提交 二叉排序樹 軟件 amp cpp creat .com xheditor ear 題目1009:二叉搜索樹 從如今開始打算重新啟動刷題征程。程序猿的人生不須要解釋! 這次撇開poj hoj等難度較大的oj系統,從九度入手(已經非常長時間沒寫過代碼
九度OJ-題目1009:二叉搜尋樹
題目1009:二叉搜尋樹 從現在開始打算重啟刷題征程。程式設計師的人生不需要解釋! 這次撇開poj hoj等難度較大的oj系統,從九度入手(已經很長時間沒寫過程式碼了),主要先“叫醒” 沉睡依舊的大腦。唉~真的很長時間沒寫部落格,沒寫程式碼了,只能加油吧!
九度OJ—題目1089:數字反轉
題目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,現在又任意兩個正整數,問他們兩個數反轉的和是否等於兩個數的和的反轉。 輸入: 第一行一個正整數表示測試資料的個數n。 只有n行,每行兩個正整數a和b(0<a,b<=10000)。 輸出
九度OJ 題目1014:排名
題目描述: 今天的上機考試雖然有實時的Ranklist,但上面的排名只是根據完成的題數排序,沒有考慮每題的分值,所以並不是最後的排名。給定錄取分數線,請你寫程式找出最後通過分數線的考生,並將他們的成績按降序列印。 輸入: 測試輸入包含若干場考試的資訊。每場
【九度】2014年王道論壇計算機考研機試全真模擬考試解題報告
時間限制:1 秒記憶體限制:128 兆特殊判題:否提交:764解決:321 題目描述: 如圖,給定任意時刻,求時針和分針的夾角(劣弧所對應的角)。 輸入: 輸入包含多組測試資料,每組測試資料由一個按hh:mm表示的時刻組成。 輸出: 對於每組測試資料,輸出一個浮點數,代表
九度OJ題目1201:二叉排序樹
紀念一下終於在二叉樹上的程式碼準確率,但還是在給root分配空間的時候忘記要寫了 悲劇 還沒看到提示要考慮忽略重複元素,這個好解決 題目描述: 輸入一系列整數,建立二叉排序數,並進行前
九度 oj 題目1208:10進位制 VS 2進位制
參考了 根據參考1有 #include <cstdio> #include <cstring> #define MAXN 4000 int main(){ int to[MAXN]; int from[MAXN];