(3) 百度2011研发工程师笔试卷
生活随笔
收集整理的這篇文章主要介紹了
(3) 百度2011研发工程师笔试卷
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 題目描述
判斷一個括號字符串是否匹配正確,如果括號有多種,怎么做?如(([]))正確,[[(()錯誤。
2 思路
假設左括號為 ?({[
右括號為 ?)}]
采用棧來解決該問題,掃描字符串, 當前符號為左括號時,入棧, 當前符號為右括號時候,出棧, 比較當前符號是否與出棧符號匹配,
如果是,則一直執行掃描字符串,入棧,出棧才操作,當掃描完字符串并且棧為空,則字符串匹配
3 java代碼
import java.util.HashMap; import java.util.Map; import java.util.Stack;public class Exam1 {private String left = "({["; // 左括號private String right = ")}]"; // 右括號private Stack<Character> stack = new Stack<Character>();private Map<Character,Character> map = new HashMap<Character,Character>();{for(int i = 0 ; i < left.length() ; i++){map.put(left.charAt(i), right.charAt(i));}}public boolean isMatch(String str){if(str==null||str.length()==0) return false;boolean isAddInStack = false;for(int i = 0 ; i < str.length() ; i++){char current = str.charAt(i);if(left.contains(current+"")){isAddInStack = true;stack.push(current);}else if(right.contains(current+"")){if(stack.size()>0){char poll = stack.pop();if(current!=map.get(poll)){return false;} }}}if(isAddInStack==true&&stack.size()==0) return true;return false;}public static void main(String args[]){String str = "()([{[]}])";Exam1 exam1 = new Exam1();boolean flag = exam1.isMatch(str);System.out.println(flag);} }
總結
以上是生活随笔為你收集整理的(3) 百度2011研发工程师笔试卷的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (2)谷歌2011校园招聘:
- 下一篇: (4) 百度2011研发工程师笔试卷