3223。運算後字串的最小長度
難度:中
主題: 雜湊表、字串、計數
給你一個字串 s。
您可以對任意次執行以下程序:
- 在字串中選擇一個索引i,使得索引i 左側至少有 一個字元等於s[i],並且至少 一個字元右邊也等於s[i]. 刪除索引 i 的
- 左邊 等於 s[i] 的 最接近的 字元。 刪除索引 i 的
- 右邊 等於 s[i] 的 最接近的 字元。
可以達到的最終字串s的最小長度。
範例1:
- 輸入: s = "abaacbcbb"
- 輸出: 5
- 說明:我們執行以下操作:
- 選擇索引 2,然後刪除索引 0 和 3 處的字元。產生的字串為 s = "bacbcbb"。
- 選擇索引 3,然後刪除索引 0 和 5 處的字元。產生的字串為 s = "acbcb"。
範例2:
- 輸入: s = "aa"
- 輸出: 2
- 解釋:我們無法執行任何操作,因此我們傳回原始字串的長度。
約束:
- 1 5
s 僅由小寫英文字母組成。
提示:
- 只有每個字元出現的頻率對於找到最終答案很重要。
- 如果某個字元出現次數少於 3 次,我們無法對其執行任何處理。
- 假設有一個字符在字串中出現至少3次,我們可以重複刪除其中兩個字符,直到最多出現2次。
解:
我們需要注意字串中每個字元的出現頻率。解決方法如下:方法:
-
計算字元頻率:
- 使用頻率表來統計每個字元在字串中出現的次數。
-
減少頻率>= 3的字元:
- 如果一個字元出現3次或以上,我們可以重複刪除其中兩個,直到只剩下2次。
-
計算最小長度:
- 減少頻率後,將所有字元的剩餘數量相加。
讓我們用 PHP 實作這個解:3223。運算後字串的最小長度
<?php /** * @param String $s * @return Integer */ function minimumLength($s) { ... ... ... /** * go to ./solution.php */ } // Example 1 $s1 = "abaacbcbb"; echo "Input: $s1\n"; echo "Output: " . minimumLength($s1) . "\n"; // Example 2 $s2 = "aa"; echo "Input: $s2\n"; echo "Output: " . minimumLength($s2) . "\n"; ?>
解釋:
-
頻率計數:
- 迭代字串,並為每個字元增加 $Frequency 陣列中的計數。
-
減少字元:
- 對於 $Frequency 數組中的每個字符,檢查其計數是否為 3 或更多。如果是這樣,請將其減少到最多 2。
-
計算結果:
- 對 $Frequency 陣列中的值求和以獲得字串的最小可能長度。
演練範例:
範例1:
- 輸入:s = "abaacbcbb"
- 頻率:['a' => 3、'b'=> 4、'c' => 2]
- 減少後:
- '一' => 2(從 3 減少),
- 'b'=> 2(從 4 減少),
- 'c'=> 2(無需減少)。
- 最小長度:2 2 2 = 6。
範例2:
- 輸入:s = "aa"
- 頻率:['a' => 2]
- 不需要減少,因為沒有字元的頻率為 3 或更多。
- 最小長度:2。
複雜:
-
時間複雜度:
- 計數頻率:O(n),其中 n 是字串的長度。
- 減少:O(1)(恆定時間,因為只有 26 個小寫字母)。
- 求和頻率:O(1).
- 整體:O(n)。
-
空間複雜度:
- O(1),因為頻率陣列最多有 26 個條目。
這個解決方案非常高效,並且在問題的限制範圍內運作良好。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
- 領英
- GitHub
以上是運算後字串的最小長度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境