Java 詳解如何刪除字符串內(nèi)的無效括號(hào)
題目:給定一個(gè)由'(', ')'和小寫字母組成的字符串,編寫一個(gè)函數(shù),從字符串中刪除最少數(shù)目的左右括號(hào),使剩余的為有效的括號(hào)字符串。算法思路1. 創(chuàng)建一個(gè)棧,遍歷字符串,并通過棧記錄字符串中所有左括號(hào)
題目:給定一個(gè)由'(', ')'和小寫字母組成的字符串,編寫一個(gè)函數(shù),從字符串中刪除最少數(shù)目的左右括號(hào),使剩余的為有效的括號(hào)字符串。
算法思路
1. 創(chuàng)建一個(gè)棧,遍歷字符串,并通過棧記錄字符串中所有左括號(hào)的位置。
2. 遍歷時(shí)遇到右括號(hào),如果棧不為空,則彈出棧頂元素,表示該右括號(hào)有效;否則,該右括號(hào)無效,直接忽略。
3. 遍歷完畢,棧中剩余元素即無效的左括號(hào)的位置,需要?jiǎng)h除這些左括號(hào)。
算法實(shí)現(xiàn)
1. 實(shí)現(xiàn)算法的具體代碼實(shí)現(xiàn)。
2. 編寫本地測(cè)試代碼,驗(yàn)證算法的正確性。
3. 運(yùn)行本地測(cè)試方法,觀察控制臺(tái)的輸出,符合預(yù)期,本地測(cè)試通過。
4. 將算法提交到平臺(tái)進(jìn)行測(cè)試,測(cè)試通過。
算法總結(jié)
通過棧的應(yīng)用,將字符串中有效的左右括號(hào)保留,并將無效的括號(hào)刪除。這種方法時(shí)間復(fù)雜度為 O(n),空間復(fù)雜度為 O(n),算法效率較高。