我們知道棧是一種先進後出的資料容器。當乙個棧的輸入序列是遞增序列(例如a,b,c,d),並且在進棧操作時,允許退棧操作,則輸出的序列可能有多種形式(例如:d,c,b,a或a,c,b,d等)。但是卻肯定不會出現如下出棧序列:a,d,b,c或d,a,b,c等。在輸入序列為遞增序列的假設下,請編寫乙個演算法判斷輸入的字串表示的出棧序列是否為正確的出棧序列。例如:輸入的字串行為dcba,則返回值為true;若輸入的字串行為adbc,則返回的值為false。
乙個簡單的堆疊:
public class sqstack
public sqstack(int size)
public void push(object data)
public object pop()
public object gettop()
public boolean isempty()
} public static boolean isstackoutsequence(string str){
sqstack s=new sqstack();
for(int i=0;ifor(int j=i+1;jif(str.charat(j)s.push(str.charat(j));
while(!s.isempty(){
char c=(character)s.pop();
if(!s.isempty()&&c>(character)s.pop())
return false;
return true;
判斷棧的出棧順序是否正確
一般這種題都是出現在選擇題裡面的,而且元素較少,所以即使我們使用野路子 依次把選項代入測試 也不會花費多少時間。但是,我們總不能一直打游擊啊,當遇到敵人主力的時候無能為力,那就坑了。所以這裡介紹怎樣轉游擊戰為陣地戰,從正面硬剛敵人並且取勝的方法。首先,假設入棧順序是1,2,3,4 正確的出棧順序 其...
劍指offer 判斷出棧順序是否正確
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 ...
根據入棧順序判斷出棧順序是否合法
題目描述 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。思路 先將入棧序列放入佇列...