成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

439. Ternary Expression Parser

zhunjiee / 1064人閱讀

摘要:所組成的最小單位,可以看作一對(duì)括號(hào)。從左往右看,作為決定一組完整最小單位的符號(hào)。每次找到一對(duì)就可以按分為左右兩個(gè)子問(wèn)題遞歸解決。從右往左看,作為決定最小單位的符號(hào),每次遇到一個(gè),就拆解離最近的兩個(gè)小單位。宏觀上看是,從小到大。

Given a string representing arbitrarily nested ternary expressions, calculate the result of the expression.
You can always assume that the given expression is valid and only consists of digits 0-9, ?, :, T and F.
#1
Input: "F?1:T?4:5"

Output: "4"

Explanation: The conditional expressions group right-to-left. Using parenthesis, it is read/evaluated as:

             "(F ? 1 : (T ? 4 : 5))"                   "(F ? 1 : (T ? 4 : 5))"
          -> "(F ? 1 : 4)"                 or       -> "(T ? 4 : 5)"
          -> "4"                                    -> "4"

#2          
Input: "T?T?F:5:3"

Output: "F"

Explanation: The conditional expressions group right-to-left. Using parenthesis, it is read/evaluated as:

             "(T ? (T ? F : 5) : 3)"                   "(T ? (T ? F : 5) : 3)"
          -> "(T ? F : 3)"                 or       -> "(T ? F : 5)"
          -> "F"                                    -> "F"

? : 所組成的最小單位,可以看作一對(duì)括號(hào)。 ?類似(, :類似 )。
從左往右看,:作為決定一組完整最小單位的符號(hào)。每次找到一對(duì)就可以按:分為左右兩個(gè)子問(wèn)題遞歸解決。
宏觀上看是從大到小拆開(kāi),從小到大遞歸回去。

public class Solution {
    public String parseTernary(String expression) {
        if(expression == null || expression.length() == 0){
            return expression;
        }
        char[] exp = expression.toCharArray();
        
        return DFS(exp, 0, exp.length - 1) + "";
        
    }
    public char DFS(char[] c, int start, int end){
        if(start == end){
            return c[start];
        }
        int count = 0, i =start;
        for(; i <= end; i++){
            if(c[i] == "?"){
                count ++;
            }else if (c[i] == ":"){
                count --;
                if(count == 0){
                    break;
                }
            }
        }
        return c[start] == "T"? DFS(c, start + 2, i - 1) : DFS(c, i+1,end);
    }
}

從右往左看,? 作為決定最小單位的符號(hào),每次遇到一個(gè)?, 就拆解離?最近的兩個(gè)小單位。宏觀上看是,從小到大。

public class Solution {
    public String parseTernary(String expression) {
        if(expression == null || expression.length() == 0) return "";
        Deque stk = new LinkedList<>();
        
        for(int i=expression.length()-1; i >= 0; i--){
            char c = expression.charAt(i);
            if(!stk.isEmpty() && stk.peek() == "?"){
                stk.pop();  // pop ?
                char first = stk.pop();
                stk.pop(); // pop :
                char second = stk.pop();
                
                if(c == "T") stk.push(first);
                else stk.push(second);
            } else {
                stk.push(c);
            }
        }
        
        return String.valueOf(stk.peek());
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/66938.html

相關(guān)文章

  • [譯] php 中更簡(jiǎn)潔的三元運(yùn)算符 ?:

    摘要:原文地址今天我發(fā)現(xiàn)了三元運(yùn)算符的一個(gè)小小的用法這給我干涸的大腦一點(diǎn)樂(lè)趣三元運(yùn)算符是對(duì)參數(shù)賦值時(shí)候的一個(gè)簡(jiǎn)潔的主要用法一個(gè)主要的用法三元運(yùn)算符能夠讓你在一行代碼中描述判定代碼從而替換掉類似以下的代碼使用以下代碼替代第二個(gè)代碼例子是非常簡(jiǎn)潔的用 原文地址 Even shorter ternary operators in PHP using ?: 今天我發(fā)現(xiàn)了PHP三元運(yùn)算符的一個(gè)小小的用...

    maxmin 評(píng)論0 收藏0
  • 如何編寫簡(jiǎn)單的parser(實(shí)踐篇)

    摘要:負(fù)責(zé)讀取和記錄當(dāng)前代碼的位置,并把讀取到的代碼交給處理,其意義在于,當(dāng)傳遞給的代碼需要進(jìn)行判讀猜測(cè)時(shí),能夠記錄當(dāng)前讀取的位置,并在接下來(lái)的操作匯總回滾到之前的讀取位置,也能在發(fā)生語(yǔ)法錯(cuò)誤時(shí),準(zhǔn)確指出錯(cuò)誤發(fā)生在代碼段的第幾行第幾個(gè)字符。 上一篇(《如何編寫簡(jiǎn)單的parser(基礎(chǔ)篇)》)中介紹了編寫一個(gè)parser所需具備的基礎(chǔ)知識(shí),接下來(lái),我們要?jiǎng)邮謱?shí)踐一個(gè)簡(jiǎn)單的parser,既然是簡(jiǎn)...

    shaonbean 評(píng)論0 收藏0
  • JavaScript JavaScript與XML——“XPath”的注意要點(diǎn)

    摘要:對(duì)于布爾值類型,如果至少有一個(gè)節(jié)點(diǎn)與表達(dá)式匹配,則求值結(jié)果返回,否則返回如果有節(jié)點(diǎn)匹配,則返回和方法以上輸出與語(yǔ)法匹配的節(jié)點(diǎn)數(shù)量默認(rèn)類型結(jié)果常量可以自動(dòng)確定返回結(jié)果的類型。 XPath是設(shè)計(jì)用來(lái)在DOM文檔中查找節(jié)點(diǎn)的一種手段,因而對(duì)XML的處理也很重要。很多瀏覽器實(shí)現(xiàn)了這個(gè)標(biāo)準(zhǔn),IE有自己的實(shí)現(xiàn)方式。 DOM3級(jí)XPath 下面的代碼是用來(lái)檢測(cè)瀏覽器是否支持DOM3級(jí)的XPath: ...

    wemallshop 評(píng)論0 收藏0
  • JavaScript JavaScript與XML——“XPath”的注意要點(diǎn)

    摘要:對(duì)于布爾值類型,如果至少有一個(gè)節(jié)點(diǎn)與表達(dá)式匹配,則求值結(jié)果返回,否則返回如果有節(jié)點(diǎn)匹配,則返回和方法以上輸出與語(yǔ)法匹配的節(jié)點(diǎn)數(shù)量默認(rèn)類型結(jié)果常量可以自動(dòng)確定返回結(jié)果的類型。 XPath是設(shè)計(jì)用來(lái)在DOM文檔中查找節(jié)點(diǎn)的一種手段,因而對(duì)XML的處理也很重要。很多瀏覽器實(shí)現(xiàn)了這個(gè)標(biāo)準(zhǔn),IE有自己的實(shí)現(xiàn)方式。 DOM3級(jí)XPath 下面的代碼是用來(lái)檢測(cè)瀏覽器是否支持DOM3級(jí)的XPath: ...

    duan199226 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<