Menu
CoddyTech

Longest Valid Parentheses

נתונה לך מחרוזת s שמורכבת רק מהתווים ( ו-). מצא את תת-המחרוזת הארוכה ביותר (רצף של תווים עוקבים) שהיא תקינה: כל ( שבה נסגרת על ידי ) שמופיעה אחריה, והזוגות מקוננים כראוי, כמו ב-(()()). החזר את האורך של תת-המחרוזת הזאת, או 0 אם אפילו () לא מופיע.

פונקציה

longestValidParentheses(s: string) → integer
sstring
מחרוזת של התווים ( ו-)
מחזירהinteger
האורך של תת־המחרוזת התקינה הארוכה ביותר, או 0 אם אין כזאת

אילוצים

  • 1 ≤ s.length ≤ 6 × 104
  • כל תו ב-s הוא ( או ).

דוגמאות

קלט
s = "()(())"
פלט
6
הסבר
כל המחרוזת בנויה היטב: () ואחריו (()). שתי חתיכות הבנויות היטב זו לצד זו יוצרות חתיכה אחת הבנויה היטב, לכן התשובה היא כל 6 התווים.

lock icon+21 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

האם תוכל גם לדווח היכן מתחילה תת־המחרוזת התקינה הארוכה ביותר, ולבחור את השמאלית ביותר כאשר לכמה מהן יש אותו אורך?

איפוס הקוד
def longestValidParentheses(s):
    # כתבו כאן קוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

s = "()(())"

צפוי

6