Menu
CoddyTech

Longest Valid Parentheses

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

פונקציה

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

אילוצים

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

דוגמאות

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

שאלת המשך

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

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

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

s = "()(())"

הפלט הצפוי

6