เรารู้ว่าสแต็กเป็นที่เก็บข้อมูลเข้าก่อนออกหลัง เมื่อลำดับอินพุตของสแต็กเป็นลำดับที่เพิ่มขึ้น (เช่น a, b, c, d) และอนุญาตให้มีการดำเนินการสแต็กระหว่างการดำเนินการพุช ลำดับเอาต์พุตอาจมีหลายรูปแบบ (เช่น: d, c, b , a หรือ a, c, b, d ฯลฯ) แต่จะไม่มีลำดับป๊อปต่อไปนี้อย่างแน่นอน: a, d, b, c หรือ d, a, b, c เป็นต้น ภายใต้สมมติฐานที่ว่าลำดับอินพุตเป็นลำดับที่เพิ่มขึ้น โปรดเขียนอัลกอริทึมเพื่อพิจารณาว่าลำดับป๊อปที่แสดงโดยสตริงอินพุตเป็นลำดับป๊อปที่ถูกต้องหรือไม่ ตัวอย่างเช่น หากลำดับอักขระอินพุตเป็น dcba ค่าที่ส่งคืนจะเป็นจริง หากลำดับอักขระอินพุตเป็น adbc ค่าที่ส่งคืนจะเป็นเท็จ
สแต็คง่ายๆ:
SqStack ระดับสาธารณะ {
ขนาด int ส่วนตัว
ข้อมูลวัตถุส่วนตัว [];
ส่วนตัวบนสุด;
SqStack สาธารณะ () {
นี้(50);
ขนาด = 50;
-
SqStack สาธารณะ (ขนาด int) {
this.size = ขนาด;
datas = วัตถุใหม่ [ขนาด];
บน = -1;
-
โมฆะสาธารณะผลักดัน (ข้อมูลวัตถุ) {
-
-
วัตถุสาธารณะป๊อป () {
-
-
วัตถุสาธารณะ getTop(){
-
-
บูลีนสาธารณะ isEmpty(){
-
-
-
บูลีนคงที่สาธารณะ isStackOutSequence (String str) {
SqStack s=SqStack ใหม่();
สำหรับ(int i=0;i<str.length();i++){
สำหรับ(int j=i+1;j<str.length();j++){
ถ้า(str.charAt(j)<str.charAt(i)){
s.push(str.charAt(j));
-
ในขณะที่(!s.isEmpty(){
ถ่าน c=(ตัวละคร)s.pop();
ถ้า(!s.isEmpty()&&c>(ตัวละคร)s.pop())
กลับเท็จ;
-
-
กลับเป็นจริง;