Given a string containing only three types of characters: '(', ')' and '*', write a function to check whether this string is valid. We define the validity of a string by these rules:
1. Any left parenthesis '(' must have a corresponding right parenthesis ')'.
2. Any right parenthesis ')' must have a corresponding left parenthesis '('.
3. Left parenthesis '(' must go before the corresponding right parenthesis ')'.
4. '*' could be treated as a single right parenthesis ')' or a single left parenthesis '(' or an empty string.
5. An empty string is also valid.
Example 1:
Input: "()"
Output: True
Example 2:
Input: "(*)"
Output: True
Example 3:
Input: "(*))"
Output: True
Note: The string size will be in the range [1, 100].
1. ממש עץ חיפוש בינארי שמאפשר לקבל עבור איבר את ממוצע הסכום של האיברים הקטנים ממנו
2. לבדוק תקינות של סוגריים במחרוזת כשיש תו מיוחד ,*, שיכול לשמש בסוגר פותח, סוגר או כלום
המגייסת התקשרה ושאלה אם אני מעוניינת במשרה. לאחר שעניתי שכן נשלח אלי מבחן במייל. היו לי 4 ימים לעשות אותו, כלומר במועד שנוח לי בארבעת הימים הקרובים, אבל מהרגע שהמבחן נפתח היו לי בערך שלוש שעות להגיש אותו.
שאלות מתוך הראיון
התבקשתי לבחור שלוש מדינות מכל יבשת, שמתחילות באות A ושהדירוג שלהן הוא הגבוה ביותר (היה צריך להתעלם מ-NULL)
1.מערכת שמקבלת NSG, כרגע מטפלת הכל אחד לפי ה TYPE שלו, איך להפוך לג'נרי כך שלא יצטרכו לשנות את הקוד בכל פעם שנוספת הודעה מסוג אחר
2.לכתבו מתודה שמקבלת עץ ומחזירה TRUE אם הוא מלא (הם קוראים לזה isNice)
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוגוסט 2020
1.להחזיק בדטהבייס טבלה של סוג הודעה לשם הקלאס שמטפל בה.
ליצור משפחת קלאסים שכל אחד מטפל בסוג הודה אחר וכולם ממשים ממשק של מתודה אחת handelMessage
בהגעת MSG, שולפים מהדטהבייס את שם הקלאס שמטפל בה בהתאם לסוג ויוצרים אותו עם reflection וקוראים ל handelMessage עם MSG
(with casting to inteface)
2. המתודה תקרא למתודה רקורסיבית שסופרת את מספר הצמתים וגם מחזירה את גובה העץ
הספירה תתבצע ע"י פרמטר שהועבר אליה