leetcode 1370. 上升下降字符串

給你一個字符串 s ,請你根據下面的算法重新構造字符串:

從 s 中選出 最小 的字符,將它 接在 結果字符串的后面。
從 s 剩余字符中選出 最小 的字符,且該字符比上一個添加的字符大,將它 接在 結果字符串后面。
重復步驟 2 ,直到你沒法從 s 中選擇字符。
從 s 中選出 最大 的字符,將它 接在 結果字符串的后面。
從 s 剩余字符中選出 最大 的字符,且該字符比上一個添加的字符小,將它 接在 結果字符串后面。
重復步驟 5 ,直到你沒法從 s 中選擇字符。
重復步驟 1 到 6 ,直到 s 中所有字符都已經被選過。
在任何一步中,如果最小或者最大字符不止一個 ,你可以選擇其中任意一個,并將其添加到結果字符串。

請你返回將 s 中字符重新排序后的 結果字符串 。

示例 1:

輸入:s = “aaaabbbbcccc”
輸出:“abccbaabccba”
解釋:第一輪的步驟 1,2,3 后,結果字符串為 result = “abc”
第一輪的步驟 4,5,6 后,結果字符串為 result = “abccba”
第一輪結束,現在 s = “aabbcc” ,我們再次回到步驟 1
第二輪的步驟 1,2,3 后,結果字符串為 result = “abccbaabc”
第二輪的步驟 4,5,6 后,結果字符串為 result = “abccbaabccba”

代碼

class Solution {public String sortString(String s) {int[] cnt=new int[26];for(int i=0;i<s.length();i++){cnt[s.charAt(i)-'a']++;}StringBuilder stringBuilder=new StringBuilder();while (stringBuilder.length()!=s.length()){for(int i=0;i<26;i++)//從小到大字母序掃一遍if(cnt[i]!=0) {//當前字母還沒用完,連接并減一cnt[i]--;stringBuilder.append((char)(i+'a'));}for(int i=25;i>=0;i--)//從大到小字母序掃一遍if(cnt[i]!=0) {cnt[i]--;stringBuilder.append((char)(i+'a'));}}return stringBuilder.toString();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392608.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392608.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392608.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 設置事物自動提交_mysql事務自動提交的問題

1&#xff1a;mysql的aut0commit配置默認是開啟的&#xff0c;也就是沒執行一條sql都會提交一次&#xff0c;就算顯示的開啟事務也會導致多條SQL不在一個事務中&#xff0c;如果需要相關的SQL在同一個事務中執行&#xff0c;那么必須將autocommit設置為OFF&#xff0c;再顯式開…

rest laravel_如何通過測試驅動開發來構建Laravel REST API

rest laravelby Kofo Okesola由Kofo Okesola 如何通過測試驅動開發來構建Laravel REST API (How to build a Laravel REST API with Test-Driven Development) There is a famous quote by James Grenning, one of the pioneers in TDD and Agile development methodologies:T…

python之numpy

numpy是一個多維的數組對象&#xff0c;類似python的列表&#xff0c;但是數組對象的每個元素之間由空格隔開。 一、數組的創建 1.通過numpy的array(參數)&#xff0c;參數可以是列表、元組、數組、生成器等 由arr2和arr3看出&#xff0c;對于多維數組來說&#xff0c;如果最里…

git 上傳

轉載于:https://www.cnblogs.com/benbentu/p/6543154.html

Liferay 部署war包時候的deployDirectory 細節分析

引入&#xff1a; 在上文中&#xff0c;我們從宏觀上講解了Liferay部署war包的動作是如何觸發監聽器并且完成部署過程的&#xff0c;但是其中最核心的一塊deployDirectory我們沒講&#xff0c;它的作用是當有了臨時目錄并且已經把war包的內容展開到該目錄之后&#xff0c;是如何…

leetcode 164. 最大間距(桶排序)

給定一個無序的數組&#xff0c;找出數組在排序之后&#xff0c;相鄰元素之間最大的差值。 如果數組元素個數小于 2&#xff0c;則返回 0。 示例 1: 輸入: [3,6,9,1] 輸出: 3 解釋: 排序后的數組是 [1,3,6,9], 其中相鄰元素 (3,6) 和 (6,9) 之間都存在最大差值 3。 示例 2: …

批處理定時mysql備份數據庫_定時備份mysql數據庫的批處理

定時備份mysql數據庫的批處理代碼&#xff0c;保存為backup_mysql.bat&#xff0c;運行即可。復制代碼 代碼如下:echo offset txt1%date:~0,4%::當前年set txt2%date:~5,2%::當前月set txt3%date:~8,2%::當前日set txt4%time:~0,2%::當前小時set txt5%time:~3,2%::當前分鐘set …

算法訓練營 重編碼_您在編碼訓練營期間可能面臨的最大挑戰

算法訓練營 重編碼by Joanna Gaudyn喬安娜高登(Joanna Gaudyn) 您在編碼訓練營期間可能面臨的最大挑戰 (The biggest struggles you might face during a coding bootcamp) You think that during a coding bootcamp nothing can be more challenging than learning programmi…

1449 砝碼稱重(思維)

題目鏈接&#xff1a;https://www.51nod.com/onlineJudge/submitDetail.html#!judgeId259281 題解&#xff1a;這題有一個技巧&#xff0c;畢竟是w^0,w^1,w^2....這樣&#xff0c;必然會想到w進制&#xff0c;而且就只能用一次。 那么就簡單了&#xff0c;把m拆成w進制&#xf…

leetcode 454. 四數相加 II(哈希表)

給定四個包含整數的數組列表 A , B , C , D ,計算有多少個元組 (i, j, k, l) &#xff0c;使得 A[i] B[j] C[k] D[l] 0。 為了使問題簡單化&#xff0c;所有的 A, B, C, D 具有相同的長度 N&#xff0c;且 0 ≤ N ≤ 500 。所有整數的范圍在 -228 到 228 - 1 之間&#xf…

“換標”Intel的窮則思變

成語有云“窮則思變”&#xff0c;用這個詞來形容早先的Intel換標也最恰當不過。當然這里“窮”&#xff0c;不是說Intel很貧窮&#xff0c;而是說Intel在自己的產業到了盡頭。Intel推產品概念的水平是一流的&#xff0c;雖然某些概念事后被認為是錯誤的&#xff08;如&#xf…

mysql開發中遇到的坑_mysql優化過程中遇見的坑(mysql優化問題特別注意)

單條查詢最后添加 LIMIT 1&#xff0c;停止全表掃描。對于char(4) 或者vachar(4)&#xff0c;無論是中文還是英文都是存儲四個字符&#xff0c;注意是字符而不是字節。如果一個字段未int類型&#xff0c;此類型只有0、1兩個狀態&#xff0c;需要為此建立索引嗎&#xff1f;過度…

初級開發人員的缺點_在您作為初級開發人員的第一年獲得此建議

初級開發人員的缺點Are you a junior developer embarking on your software development career?您是從事軟件開發事業的初級開發人員嗎&#xff1f; Or a recent computer science graduate who has recently started a new job?還是最近剛開始從事新工作的計算機科學專業…

Spark日志分析

根據tomcat日志計算url訪問了情況&#xff0c;具體的url如下&#xff0c; 要求&#xff1a;區別統計GET和POST URL訪問量 結果為&#xff1a;訪問方式、URL、訪問量 輸入文件&#xff1a; 196.168.2.1 - - [03/Jul/2014:23:36:38 0800] "GET /course/detail/3.htm HTTP/1.…

進程、線程和協程的區別

首先&#xff0c;給出“進程、線程和協程”的特點&#xff1a; 進程&#xff1a;擁有自己獨立的堆和棧&#xff0c;既不共享堆&#xff0c;也不共享棧&#xff0c;進程由操作系統調度&#xff1b;線程&#xff1a;擁有自己獨立的棧和共享的堆&#xff0c;共享堆&#xff0c;不共…

leetcode 493. 翻轉對(分治算法)

給定一個數組 nums &#xff0c;如果 i < j 且 nums[i] > 2*nums[j] 我們就將 (i, j) 稱作一個重要翻轉對。 你需要返回給定數組中的重要翻轉對的數量。 示例 1: 輸入: [1,3,2,3,1] 輸出: 2 代碼 class Solution {public int reversePairs(int[] nums) {return getR…

使用brew安裝軟件

brew 又叫Homebrew&#xff0c;是Mac OSX上的軟件包管理工具&#xff0c;能在Mac中方便的安裝軟件或者卸載軟件&#xff0c; 只需要一個命令&#xff0c; 非常方便 brew類似ubuntu系統下的apt-get的功能 閱讀目錄 安裝brew 使用brew安裝軟件 使用brew卸載軟件 使用brew查詢軟…

mysql 繞過select報錯_MySQL注射繞過技巧(三)

在測試一次注入的時候發現過濾了逗號 所以找到這個思路第一次遇到的時候是看key哥挖洞 遇到后就想記錄下來正文過濾了逗號 利用join來逐步查詢select*from(select 1)a join (select 2)b join (select 3)c;例如下圖逐步查詢user()user() basediruser() basedir version()也可以…

深入理解javascript

深入理解JavaScript系列&#xff08;1&#xff09;&#xff1a;編寫高質量JavaScript代碼的基本要點 深入理解JavaScript系列&#xff08;2&#xff09;&#xff1a;揭秘命名函數表達式 深入理解JavaScript系列&#xff08;3&#xff09;&#xff1a;全面解析Module模式 深入理…

spark 并行處理_如何使用Spark集群并行處理大數據

spark 并行處理by Hari Santanam通過Hari Santanam 如何使用Spark集群并行處理大數據 (How to use Spark clusters for parallel processing Big Data) 將Apache Spark的彈性分布式數據集(RDD)與Databricks一起使用 (Use Apache Spark’s Resilient Distributed Dataset (RDD)…