本文說明瞭如何使用Java查找最長平衡括號前綴的長度。首先,我們將使用幾個(gè)示例理解問題,然後學(xué)習(xí)兩種不同的方法來尋找問題。
問題解釋在這裡,我們給出一個(gè)包含括號的字符串,我們需要從字符串中找到平衡的括號集的長度。換句話說,如果有所有開口括號
“(”(“”),那麼我們將其稱為平衡。 從字符串的開頭,前綴定義平衡集。例如,對於括號集'(())()',僅'(())'。 >輸入和輸出方案
為了更好地理解,讓我們看一些輸入和輸出方案。
如果輸入字符串為
“(()”,平衡括號前綴為
()- ,則長度為2。
- 如果輸入字符串為”(((())))(((“),平衡括號前綴為((()(()(()(()) )))>所以長度為8。 >
- 如果輸入字符串為“(()()())()()”,平衡的括號前綴為(()()()()),則長度是6。
- 最長平衡括號前綴的長度可以找到如下: 使用堆棧數(shù)據(jù)結(jié)構(gòu) 計(jì)數(shù)打開和關(guān)閉括號
使用堆棧數(shù)據(jù)結(jié)構(gòu)
- >可以使用堆棧。如果從堆棧中找到開口括號' (
- ',請將其推到堆棧上。如果找到閉合括號,請彈出堆棧,並將計(jì)數(shù)器變量增加2(平衡均值的長度您得到的是2 。)繼續(xù)執(zhí)行此操作,並在變?yōu)榭斩褩r(shí)返回計(jì)數(shù)器變量 >算法
算法如下:
如果字符為
(>,將其推到堆棧上。>
如果
字符為)
,則會(huì)彈出堆棧。<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p> <p><b>ステップ2:</b>文字列の各文字を反復(fù)処理します。</p></code>
- >將計(jì)數(shù)器增加2。
- 檢查堆棧是否為空。 如果是空的,則結(jié)束循環(huán)。
- > 步驟3:
-
>示例
<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p> <p><b>ステップ2:</b>文字列の各文字を反復(fù)処理します。</p></code>
輸出
輸入字符串是:((())((() 最長平衡括號前綴的長度為:6>
計(jì)數(shù)打開和關(guān)閉括號此方法使用兩個(gè)變量:計(jì)數(shù)和長度。如果字符為“
”(>”,則從字符串中獲得1;如果字符計(jì)數(shù)為1;如果字符為“)”,則減少數(shù)量為1,而增量長度則增加2。檢查計(jì)數(shù)是否為0,如果是0,則退出循環(huán)並返回長度。 >示例
import java.util.Stack; public class Example { public static int longestBalancedPrefix(String s) { Stack<Character> stack = new Stack<>(); int count = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(') { stack.push(c); } else if (c == ')') { if (!stack.isEmpty()) { stack.pop(); count += 2; } } if (stack.isEmpty()) { break; } } return count; } public static void main(String[] args) { String s = "((())((("; int length = longestBalancedPrefix(s); System.out.println("入力文字列は:" + s); System.out.println("最長のバランスの取れた括弧のプレフィックスの長さは:" + length); } }
輸出輸入字符串為((()()())((()))) 最長平衡的括號前綴長度為8
以上是使用Java的最長平衡括號前綴的長度的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

yield關(guān)鍵字用於創(chuàng)建生成器,按需產(chǎn)生值,節(jié)省內(nèi)存。 1.替代return生成有限序列,如斐波那契數(shù)列;2.實(shí)現(xiàn)無限序列,如自然數(shù)列;3.處理大數(shù)據(jù)或文件讀取,逐行處理避免內(nèi)存溢出;4.注意生成器只能遍歷一次,可用next()或for循環(huán)調(diào)用。

VariableVariables是PHP中一種將變量值作為另一個(gè)變量名使用的特性,它通過$$var的形式實(shí)現(xiàn)動(dòng)態(tài)訪問變量、處理表單輸入和構(gòu)建靈活配置結(jié)構(gòu)等功能。例如$name="age";echo$$name相當(dāng)於輸出$age的值;常見使用場景包括:1.動(dòng)態(tài)訪問變量,如${$type.'_info'}可根據(jù)條件選擇不同變量;2.處理表單輸入時(shí)自動(dòng)賦值,但需注意安全隱患;3.構(gòu)建靈活的配置結(jié)構(gòu),通過字符串名稱獲取對應(yīng)值;使用時(shí)需注意代碼維護(hù)性、命名衝突和調(diào)試難度等問題,建議僅

PHP基礎(chǔ)語法包括:1.使用包裹代碼;2.用echo或print輸出內(nèi)容,其中echo支持多參數(shù);3.變量無需聲明類型,以$開頭,常見類型有字符串、整數(shù)、浮點(diǎn)數(shù)、布爾值、數(shù)組和對象。掌握這些要點(diǎn)有助於快速入門PHP開發(fā)。

PHP有8種變量類型,常用包括Integer、Float、String、Boolean、Array、Object、NULL和Resource。要查看變量類型,可使用gettype()或is_type()系列函數(shù)。 PHP會(huì)自動(dòng)轉(zhuǎn)換類型,但建議關(guān)鍵邏輯用===嚴(yán)格比較。手動(dòng)轉(zhuǎn)換可用(int)、(string)等語法,但注意可能丟失信息。

PHP文件是一種服務(wù)器端腳本語言文件,用於動(dòng)態(tài)網(wǎng)頁開發(fā),能處理表單數(shù)據(jù)、連接數(shù)據(jù)庫、生成動(dòng)態(tài)內(nèi)容、控制訪問權(quán)限。它以.php結(jié)尾,代碼在服務(wù)器上執(zhí)行後返回結(jié)果給瀏覽器。要運(yùn)行PHP文件需安裝本地服務(wù)器環(huán)境如XAMPP,把文件放至服務(wù)器目錄並通過瀏覽器訪問。 PHP通常與HTML混合使用,建議學(xué)習(xí)前先掌握HTML、CSS、JavaScript及基本編程概念,多練習(xí)可快速上手。

PHP變量使用常見錯(cuò)誤包括未定義變量、引用賦值不當(dāng)、類型比較不嚴(yán)謹(jǐn)和全局變量混亂。 1.忽略變量未定義會(huì)引發(fā)Notice錯(cuò)誤,應(yīng)使用isset()或empty()檢查;2.引用賦值修改變量會(huì)影響其他變量,應(yīng)在循環(huán)後unset()清理;3.使用==會(huì)導(dǎo)致類型自動(dòng)轉(zhuǎn)換,應(yīng)優(yōu)先使用===進(jìn)行全等判斷;4.全局變量易造成混亂,建議避免或封裝成類屬性以提高代碼清晰度。

PHP變量以$開頭,命名需遵循規(guī)則,如不能以數(shù)字開頭、區(qū)分大小寫;變量作用域分為局部、全局和超全局;使用global可訪問全局變量,但建議用參數(shù)傳遞;可變變量和引用賦值需謹(jǐn)慎使用。變量是存儲數(shù)據(jù)的基礎(chǔ),正確掌握其規(guī)則和機(jī)制對開發(fā)至關(guān)重要。

開發(fā)Go網(wǎng)絡(luò)掃描器需把握四個(gè)核心點(diǎn):1.選擇合適的庫如net、gopacket;2.理解ICMP、TCP、SYN、UDP等底層協(xié)議;3.利用goroutine和channel設(shè)計(jì)並發(fā)機(jī)制並控制數(shù)量;4.確保掃描合規(guī)性避免濫用。網(wǎng)絡(luò)掃描基本方式包括ICMP探測主機(jī)存活、TCP/SYN/UDP端口檢測等,Go的net庫可實(shí)現(xiàn)基礎(chǔ)掃描,gopacket支持原始數(shù)據(jù)包操作。通過限制goroutine數(shù)量配合WaitGroup和緩衝channel可提升效率。注意事項(xiàng)包括合法授權(quán)、速率控制、避免公網(wǎng)大規(guī)模掃
