נבחנתי בבית והנבלות עדיין לא החזירו תשובה,
אני לא הכי מנוסה ב JS
לקח לי חצי שעה ללמוד מה צריך ולכתוב את האלגוריתם, עם טעויות סינטקס קטנות וטעות בהגדרת גבולות הלולאה, שתיקנתי יותר מאוחר,
בסה"כ חרגתי פי 2 מהזמן.
אבל יותר מענין אותי האם יש דרך אחרת יותר יעילה וקריאה יותר.
צריך לכתוב פונקציה המקבלת string ומחזירה 1 אם הסוגריים בקלט מקוננים נכון ו- 0 אחרת.
דוגמאות :
You need to consider three kinds: (), [], <> and only these kinds.
Examples:
verify("---(++++)----") -> 1
verify("") -> 1
verify("before ( middle []) after ") -> 1
verify(") (") -> 0
verify("} {") -> 1 //no, this is not a mistake.
verify("<( >)") -> 0
verify("( [ <> () ] <> )") -> 1
verify(" ( [)") -> 0
קוד HTML:function verify(text) { var stack = new Array(); var myMap = new Map(); myMap.set('[' ,']'); myMap.set('(',')'); myMap.set( '<','>'); myMap.set('”', '”'); var regOpen = /[([<"]/ ; var regClose = /[\)\]\>"]/ ; var length= text.length-1; var textArr= text.split(""); var pop; console.log(length); for (i=0;i<=length; i++ ) { if( textArr[i].match(regOpen) ) stack.push(textArr[i]); else if( textArr[i].match(regClose) ) { pop = myMap.get(stack.pop()); if( pop!= textArr[i] ) return 0; } } return (stack.length==0 ? 1:0); }


ציטוט ההודעה בתגובה