ARTS挑戰(zhàn)第五周

Algorithm

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.

import java.util.Stack;

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '{' || c == '[' || c == '(') {
                stack.push(c);
            } else {
                if (stack.isEmpty()) {
                    return false;
                }

                char topChar = stack.pop();
                if (c == '}' && topChar != '{') {
                    return false;
                }
                if (c == ']' && topChar != '[') {
                    return false;
                }
                if (c == ')' && topChar != '(') {
                    return false;
                }
            }
        }

        return stack.isEmpty();
    }
}

Review

Tip

關(guān)于選擇

  1. 面對多個選擇,展望一下各個選擇的最終結(jié)果,在結(jié)果上進行斟酌。
  2. 明白自己的目標是什么,并確定優(yōu)先級,然后進行選擇
  3. 目標清晰才能井然有序
  4. 在發(fā)動汽車前一定要知道自己要往哪里去,還要知道選擇什么途徑去
  5. 在實現(xiàn)目標的方式上要靈活變通

Share

一般將先存放MSB所在字節(jié)的架構(gòu)稱為大端,將先存放LSB所在字節(jié)的架構(gòu)稱為小端。至于先放置MSB所在字節(jié)還是先放置LSB所在的字節(jié),是由CPU的類型決定的。(近期設(shè)計的CPU有些可以在大端和小端之間切換)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容