括號有許多種類,如:大括號 {}、中括號 []、以及小括號 ()。
在本題中,我們僅考慮小括號。括號通常成對使用,如果一個由括號組成的序列具有巢狀結構 (nested structure),我們稱此序列為「格式正確」。
例如:
- 序列
()(()) 是格式正確的;
- 序列
(()() 則不是格式正確的,因為沒辦法在滿足每個右括號只能被配對一次的條件下,讓每個左括號都能配對到它後面的其中一個右括號。
更正式的說,「格式正確」可以定義如下:
一個由括號構成的序列 為格式正確,若同時滿足以下兩個條件:
- 由左到右掃描 到 ,在過程中任一位置的右括號
) 的數量都不超過左括號 ( 的數量。
- 序列中左括號的總數等於右括號的總數。
PorgramText 是一家軟體公司,正在為程式設計師開發一款全新的文字編輯器。這款編輯器將提供許多強大的功能,其中之一是自動修正輸入錯誤。
在觀察使用者的輸入行為後,PorgramText 發現許多程式設計師因打字速度太快,常常不小心多輸入左括號或右括號。為了解決這個問題,編輯器將提供一項功能:將一個可能「格式不正確」的括號序列 自動轉換為「格式正確」的序列 。在轉換過程中,唯一允許的操作是刪除左括號或右括號。
PorgramText 想要讓你幫助他們:計算最少需要刪除多少個括號,才能讓 轉換成一個「格式正確」的序列。