国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
問(wèn)題の説明
入力と出力のシナリオ
スタックデータ構(gòu)造を使用する
アルゴリズム
開(kāi)き括弧と閉じ括弧を數(shù)える
ホームページ Java &#&チュートリアル Javaを使用した最長(zhǎng)バランスの括弧內(nèi)のプレフィックスの長(zhǎng)さ

Javaを使用した最長(zhǎng)バランスの括弧內(nèi)のプレフィックスの長(zhǎng)さ

Feb 07, 2025 am 11:55 AM
java

Length of longest balanced parentheses prefix using Java

この記事では、Javaを使用して最長(zhǎng)のバランスの取れた括弧のプレフィックスの長(zhǎng)さを求める方法を説明します。まず、いくつかの例を用いて問(wèn)題を理解し、次にそれを求める2つの異なるアプローチを?qū)W習(xí)します。

問(wèn)題の説明

ここでは、括弧を含む文字列が與えられ、文字列からバランスの取れた括弧の集合の長(zhǎng)さを求める必要があります。つまり、すべての開(kāi)き括弧"("に対して閉じ括弧")"があれば、それをバランスが取れていると呼びます。

プレフィックスは、文字列の先頭からのバランスの取れた集合を定義します。例えば、括弧の集合'(())()'の場(chǎng)合、'(())'のみを考慮します。

入力と出力のシナリオ

より良い理解のために、いくつかの入力と出力のシナリオを見(jiàn)てみましょう。

  • 入力文字列が"(()"の場(chǎng)合、バランスの取れた括弧のプレフィックスは()なので、長(zhǎng)さは2です。
  • 入力文字列が"((()()))((("の場(chǎng)合、バランスの取れた括弧のプレフィックスは((()()))なので、長(zhǎng)さは8です。
  • 入力文字列が"(()())()()"の場(chǎng)合、バランスの取れた括弧のプレフィックスは(()())なので、長(zhǎng)さは6です。

最長(zhǎng)のバランスの取れた括弧のプレフィックスの長(zhǎng)さは、次のようにして求めることができます。

  • スタックデータ構(gòu)造を使用する
  • 開(kāi)き括弧と閉じ括弧を數(shù)える

スタックデータ構(gòu)造を使用する

スタックを使用できます。スタックから開(kāi)き括弧 '(' が見(jiàn)つかった場(chǎng)合は、それをスタックにプッシュします。閉じ括弧が見(jiàn)つかった場(chǎng)合は、スタックをポップし、カウンタ変數(shù)を2増分します(バランスの取れたペアの長(zhǎng)さは2です)。これを続け、空のスタックになった時(shí)點(diǎn)で、カウンタ変數(shù)を返します。

アルゴリズム

アルゴリズムは以下のとおりです。

<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p>
<p><b>ステップ2:</b>文字列の各文字を反復(fù)処理します。</p></code>
  • 文字が(の場(chǎng)合、スタックにプッシュします。
  • 文字が)の場(chǎng)合、スタックをポップします。
  • カウンタを2増分します。
  • スタックが空かどうかを確認(rèn)します。
  • 空の場(chǎng)合、ループを終了します。

ステップ3:最後にカウンタを返します。

<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p>
<p><b>ステップ2:</b>文字列の各文字を反復(fù)処理します。</p></code>

出力

入力文字列は:((())(( 最長(zhǎng)のバランスの取れた括弧のプレフィックスの長(zhǎng)さは:6

開(kāi)き括弧と閉じ括弧を數(shù)える

このアプローチでは、countとlengthという2つの変數(shù)を使用します。文字列から文字が"("の場(chǎng)合、countを1増分し、文字が")"の場(chǎng)合、countを1減分し、lengthを2増分します。countが0かどうかを確認(rèn)し、0の場(chǎng)合はループを終了してlengthを返します。

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("最長(zhǎng)のバランスの取れた括弧のプレフィックスの長(zhǎng)さは:" + length);
   }
}

出力

入力文字列は ((())())(()) 最長(zhǎng)のバランスの取れた括弧のプレフィックスの長(zhǎng)さは 8

以上がJavaを使用した最長(zhǎng)バランスの括弧內(nèi)のプレフィックスの長(zhǎng)さの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類(lèi)リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaのマップを反復(fù)する方法は? Javaのマップを反復(fù)する方法は? Jul 13, 2025 am 02:54 AM

Javaにはマップを通過(guò)する3つの一般的な方法があります。1。エントリセットを使用してキーと値を同時(shí)に取得します。これは、ほとんどのシナリオに適しています。 2。キーセットまたは値をそれぞれキーまたは値を通過(guò)する。 3. Java8のForeachを使用して、コード構(gòu)造を簡(jiǎn)素化します。 EntrySetは、すべてのキー値ペアを含むセットを返し、各ループはキーと値に頻繁にアクセスするのに適したMap.entryオブジェクトを取得します。キーまたは値のみが必要な場(chǎng)合は、それぞれkeyset()またはvalues()を呼び出すことができます。または、キーを橫斷するときにmap.get(key)を介して値を取得できます。 Java 8はForeachを使用できます((key、value) - &gt

Javaの比較対Comparator Javaの比較対Comparator Jul 13, 2025 am 02:31 AM

Javaでは、Defaultのデフォルトソートルールを內(nèi)部的に定義するためにAcparableが使用され、コンパレータを使用して複數(shù)のソートロジックを外部から定義します。 1.Comparableは、クラス自體によって実裝されるインターフェイスです。比較()メソッドを書(shū)き換えることにより、自然な順序を定義します。弦や整數(shù)など、固定および最も一般的に使用されるソートメソッドを備えたクラスに適しています。 2。Comparatorは、同じクラスに複數(shù)の並べ替え方法が必要な狀況に適した、Compare()メソッドを介して実裝された外部定義の機(jī)能インターフェイスであり、クラスソースコードを変更できない、またはソートロジックが変更されることが多い場(chǎng)合があります。 2つの違いは、比較可能がソートロジックを定義するだけで、クラス自體を変更する必要があることですが、比較して

Javaのキャラクターエンコーディングの問(wèn)題を処理する方法は? Javaのキャラクターエンコーディングの問(wèn)題を処理する方法は? Jul 13, 2025 am 02:46 AM

Javaのキャラクターエンコーディングの問(wèn)題に対処するために、重要なのは、各ステップで使用されるエンコードを明確に指定することです。 1.テキストを読み書(shū)きするときは常にエンコードを指定し、inputstreamreaderとoutputStreamWriterを使用し、明示的な文字セットを渡して、システムのデフォルトエンコードに依存しないようにします。 2.ネットワーク境界で文字列を処理するときに両端が一貫していることを確認(rèn)し、正しいコンテンツタイプのヘッダーを設(shè)定し、ライブラリでエンコードを明示的に指定します。 3. string.getBytes()およびNewString(byte [])を注意して使用し、プラットフォームの違いによって引き起こされるデータの破損を避けるために、常に手動(dòng)でstardantcharsets.utf_8を指定します。要するに、

c c Jul 15, 2025 am 01:30 AM

STD :: Chronoは、現(xiàn)在の時(shí)間の取得、実行時(shí)間の測(cè)定、操作時(shí)點(diǎn)と期間の測(cè)定、分析時(shí)間のフォーマットなど、時(shí)間の処理にCで使用されます。 1。STD:: Chrono :: System_Clock :: now()を使用して、現(xiàn)在の時(shí)間を取得します。 2。STD:: CHRONO :: STEADY_CLOCKを使用して実行時(shí)間を測(cè)定して単調(diào)さを確保し、DurateR_CASTを通じてミリ秒、秒、その他のユニットに変換します。 3。時(shí)點(diǎn)(Time_Point)と期間(期間)は相互運(yùn)用可能ですが、ユニットの互換性と時(shí)計(jì)エポック(エポック)に注意を払う必要があります

ハッシュマップはJavaで內(nèi)部的にどのように機(jī)能しますか? ハッシュマップはJavaで內(nèi)部的にどのように機(jī)能しますか? Jul 15, 2025 am 03:10 AM

HashMapは、Javaのハッシュテーブルを介してキーと値のペアストレージを?qū)g裝し、そのコアはデータの位置をすばやく配置することにあります。 1.最初にキーのHashCode()メソッドを使用して、ハッシュ値を生成し、ビット操作を介して配列インデックスに変換します。 2。異なるオブジェクトは、同じハッシュ値を生成し、競(jìng)合をもたらす場(chǎng)合があります。この時(shí)點(diǎn)で、ノードはリンクされたリストの形式で取り付けられています。 JDK8の後、リンクされたリストが長(zhǎng)すぎ(デフォルトの長(zhǎng)さ8)、効率を改善するために赤と黒の木に変換されます。 3.カスタムクラスをキーとして使用する場(chǎng)合、equals()およびhashcode()メソッドを書(shū)き直す必要があります。 4。ハッシュマップは容量を動(dòng)的に拡大します。要素の數(shù)が容量を超え、負(fù)荷係數(shù)(デフォルト0.75)を掛けた場(chǎng)合、拡張して再ハッシュします。 5。ハッシュマップはスレッドセーフではなく、マルチスレッドでconcuを使用する必要があります

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問(wèn)題に注意してください。これらの2種類(lèi)の違いを理解することは、より安定した信頼性の高いコードを書(shū)くのに役立ちます。

Javaの「靜的」キーワードは何ですか? Javaの「靜的」キーワードは何ですか? Jul 13, 2025 am 02:51 AM

Injava、thestatickeywordmeansameansmestotheclassit self、nottointances.staticvariablesaresharedacrossallinstancesは、Objedcreationを使用して、GlobalTrackingorconconstants.StaticMethododsodsodsoperateateClasslevel

JavaのReentrantLockとは何ですか? JavaのReentrantLockとは何ですか? Jul 13, 2025 am 02:14 AM

ReentrantLockは、同期するよりもJavaでより柔軟なスレッドコントロールを提供します。 1.非ブロッキングの取得ロック(tryLock())、タイムアウト(TryLock(Longtimeout、TimeUnitunit))および割り込み可能な待機(jī)ロックを使用したロック取得をサポートします。 2。糸の飢erを避けるために公正なロックを許可します。 3.複數(shù)の條件変數(shù)をサポートして、より洗練された待機(jī)/通知メカニズムを?qū)g現(xiàn)します。 4.リソースの漏れを避けるために、ロックを手動(dòng)で解放する必要があります。 5.カスタム同期ツールや複雑な同時(shí)構(gòu)造など、高度な同期制御が必要なシナリオに適していますが、シンクロは単純な相互除外要件にはまだ推奨されています。

See all articles