每日一道Leetcode——上升下降字串
題目:
我的解法:
class Solution {
public String sortString(String s) {
// 建立一個陣列記錄每個字母的個數
int[] array = new int[26];
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
int d = c - 'a';
array[d]++;
}
StringBuilder sb = new StringBuilder();
// positive用來判斷是正向遍歷還是反向遍歷
boolean positive = true;
// isEmpty用來判斷是否還有字母剩餘
boolean isEmpty = false;
while(!isEmpty){
// 正向遍歷
if(positive){
for(int i=0; i<array.length; i++){
if(array[i]!=0){
sb.append((char)('a'+i));
array[i]--;
}
}
positive = false;
}else{
// 反向遍歷
for(int i=array.length-1; i>=0; i--){
if(array[i]!=0){
sb.append((char)('a'+i));
array[i]--;
}
}
positive = true;
}
// 統計剩餘字母
for(int a: array){
if(a > 0){
isEmpty = false;
break;
}
isEmpty = true;
}
}
return sb.toString();
}
}
官方題解:
class Solution {
public String sortString(String s) {
int[] num = new int[26];
for (int i = 0; i < s.length(); i++) {
num[s.charAt(i) - 'a']++;
}
StringBuffer ret = new StringBuffer();
while (ret.length() < s.length()) {
for (int i = 0; i < 26; i++) {
if (num[i] > 0) {
ret.append((char) (i + 'a'));
num[i]--;
}
}
for (int i = 25; i >= 0; i--) {
if (num[i] > 0) {
ret.append((char) (i + 'a'));
num[i]--;
}
}
}
return ret.toString();
}
}
作者:LeetCode-Solution
連結:https://leetcode-cn.com/problems/increasing-decreasing-string/solution/shang-sheng-xia-jiang-zi-fu-chuan-by-leetcode-solu/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
相關文章
- 上升下降字串java字串Java
- 每日一道 LeetCode (3):迴文數LeetCode
- 每日一道 LeetCode (1):兩數之和LeetCode
- 每日一道 LeetCode (10):搜尋插入位置LeetCode
- 每日一道 LeetCode (2):整數反轉LeetCode
- 我的力扣演算法1370-上升下降字串力扣演算法字串
- 每日一道 LeetCode (48):最長迴文子串LeetCode
- 每日一道 LeetCode (19):合併兩個有序陣列LeetCode陣列
- 每日一道 LeetCode (4):羅馬數字轉整數LeetCode
- 【Leetcode每日筆記】205. 同構字串(Python)LeetCode筆記字串Python
- 每日一道演算法題--leetcode 112--路徑總和--python演算法LeetCodePython
- 每日一道演算法題--leetcode 461--漢明距離--python演算法LeetCodePython
- 每日一道Leetcode - 430. 扁平化多級雙向連結串列LeetCode
- LeetCode每日一題: 反轉字串中的母音字母(No.345)LeetCode每日一題字串
- 每日一道演算法題--leetcode 113--路徑總和II--python演算法LeetCodePython
- LeetCode每日一題:反轉字串中的單詞 III(No.557)LeetCode每日一題字串
- 每日一道演算法題--leetcode 169--求眾數--python--兩種方法演算法LeetCodePython
- leetcode每日一題LeetCode每日一題
- Leetcode每日打卡----20200927LeetCode
- 20241108,LeetCode 每日一題,用 Go 計算字串中最長無重複字元LeetCode每日一題Go字串字元
- 每日一道演算法題--leetcode 26--刪除排序陣列中重複項--python演算法LeetCode排序陣列Python
- leetcode:字串相乘(java)LeetCode字串Java
- Leetcode每日一題(1)LeetCode每日一題
- 每日LeetCode-day1LeetCode
- 「每日一道演算法題」Reverse Integer演算法
- 每日一道演算法:迴文數演算法
- 每日一道演算法, 《兩數之和》演算法
- 每日一道演算法題--leetcode 124--二叉樹中的最大路徑和--python演算法LeetCode二叉樹Python
- 分享一道有趣的 Leetcode 題目LeetCode
- GfK:UHD電視銷量上升,但營收下降營收
- LeetCode 394 字串解碼LeetCode字串
- LeetCode-415-字串相加LeetCode字串
- LeetCode-043-字串相乘LeetCode字串
- leetcode 87 擾亂字串LeetCode字串
- 每日leetcode——最長公共字首LeetCode
- 每日leetcode——155. 最小棧LeetCode
- 每日leetcode——42. 接雨水LeetCode
- 每日一道演算法:旋轉陣列演算法陣列