題目大概是:
給定乙個如下格式的字串(1,(2,3),(4,(5,6),7))括號內的元素可以是數字,也可以是另乙個括號, * 請實現乙個演算法消除巢狀的括號,比如把上面的表示式變成(1,2,3,4,5,6,7), * 如果表示式有誤請報錯。具體的**如下:
/*
* 題目:給定乙個如下格式的字串(1,(2,3),(4,(5,6),7))括號內的元素可以是數字,也可以是另乙個括號,
* 請實現乙個演算法消除巢狀的括號,比如把上面的表示式變成:(1,2,3,4,5,6,7),
* 如果表示式有誤請報錯。
* * 思路:
* 1,每當獲取字串中的乙個字元,判斷其字串。如果是數值的話,就加入新的字串中。
* 如果是逗號的話,就繼續讀取下乙個字元。
* 如果是方括號的話,繼續讀取下乙個字元。而且還有判斷其方括號是否是完全比閉合。
* 2,看到這個,讓我想起了parse類,其主要功能的是計算器,其主要的思想是採用遞迴下降的思想來實現。
* * 步驟:
* 1,逐個讀取字串,當讀取乙個字元時,判斷其是否是數值型。如果是,則把這個字元新增進去。不是的話,則跳到下乙個方法。
* 對其字元再次進行判斷,判斷是否是方括號。如果是,則跳到第乙個方法。再次讀取字元。以此類推。
/* * 方法一:
*///1,該方法是判斷其字元是否是數值,如果是則進行新增。如果不是,則跳到下乙個方法。
private void isnumber()
else
iscomma();
} private void iscomma()else
isbracket(); }
//3,該方法是判斷其字元是否是方括號,如果是,則跳轉上乙個方法。並且判斷其是否方括號是否是閉合的。
private void isbracket()else
} }
//讀取表示式下乙個字元
private void next()
//開始讀取
c += expr.charat(index);
//判斷是否是數值
if(c.matches("[0-9]"))
//判斷是否是逗號
if(",".equals(c))
//判斷是否是左括號
if(c.equals("("))
//判斷是否是右括號
if(c.equals(")"))
}}
百度2014校園招聘消除巢狀的括號
給定乙個如下格式的字串 1,2,3 4,5,6 7 括號內的元素可以是數字,也可以是另乙個括號,請實現乙個演算法消除巢狀的括號,比如把上面的表示式變成 1,2,3,4,5,6,7 如果表示式有誤請報錯。時間複雜度0 n 空間複雜度為o 1 1 include 2 int is rights char...
C語言50題之百度筆試題
大端模式,是指資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 這和我們的閱讀習慣一致。小端模式,是指資料的高位元組儲存在記憶體的高位址中,而資料的低位元組儲存在記憶體的低位址中,這...
編譯原理之消除算術表示式文法的左遞迴
現在給定如下算術表示式文法 expr expr term expr term term term term factor term factor factor factor expr number id很明顯,上訴文法中,expr和term都有左遞迴。為了消除上訴文法的左遞迴,可以將插入新的非終結符...