我的力扣演算法1370-上升下降字串
ok
看題:
其實吧,這題簡單,就是給你一個字串,然後讓你排序,排序的規則是,最開始是依靠字典序,從小到大排,然後如果找不到大的,就在從大到小排,直到所有字元都排好順序。最開始寫了一個演算法,按邏輯來說應該是可以實現的,但是用於時間複雜度太高,導致超出時間限制,所以就沒了下文,其實核心思想與下面程式碼相差不大。
class Solution {
public:
string sortString(string s) {
vector<int> aaa(26);//定義一個陣列,主要是為了存放一個字母出現了多少次,並且還根據下標進行了特殊的排序
for(char t:s){//遍歷字串,然後存放字母出現次數
aaa[t-'a']++;
}
string a;//存放排序後的字串
while(a.length()<s.length()){//只要這個字串沒有給的字串大,也就是沒有遍歷完所有字串就繼續迴圈
for(int i=0;i<26;i++){//遍歷次數陣列
if(aaa[i]){//如果當前這個字母存在且沒被用完
a.push_back(i+'a');//就放在排序字串後面
aaa[i]--;//次數減少
}
}//這一步完成了升序排序
for(int i=25;i>=0;i--){
if(aaa[i]){
a.push_back(i+'a');
aaa[i]--;
}
}
}//同理,但是由於是逆迴圈,所以完成的是降序排序。
return a;
}
};
ok
相關文章
- 上升下降字串java字串Java
- 每日一道Leetcode——上升下降字串LeetCode字串
- 力扣oj-字串相乘力扣字串
- 力扣#43 字串相乘(C++)力扣字串C++
- 力扣之反轉字串中的單詞 III力扣字串
- 力扣刷題-滑動視窗(字串)力扣字串
- 力扣--連結串列演算法力扣演算法
- 【每週例題】力扣 C++ 字串相乘力扣C++字串
- 演算法--力扣27. 移除元素演算法力扣
- 演算法--力扣2. 兩數相加演算法力扣
- 力扣---2020.7.30力扣
- 力扣---2020.9.3力扣
- 力扣---2020.9.4力扣
- 力扣---2020.9.28力扣
- 力扣---2020.9.27力扣
- 力扣---2020.9.29力扣
- 力扣-1209. 刪除字串中的所有相鄰重複項 II力扣字串
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- 力扣(LeetCode)543力扣LeetCode
- 力扣(LeetCode)934力扣LeetCode
- 力扣(LeetCode)103力扣LeetCode
- 力扣(LeetCode)513力扣LeetCode
- 力扣(LeetCode)389力扣LeetCode
- 力扣(LeetCode)796力扣LeetCode
- 力扣(LeetCode)863力扣LeetCode
- 力扣(LeetCode)310力扣LeetCode
- 力扣(LeetCode)130力扣LeetCode
- 力扣(LeetCode)965力扣LeetCode
- 力扣2589 5.16力扣
- 力扣1542 2024.5.22力扣
- 力扣2713 2024.6.19力扣
- 力扣題解力扣
- 力扣-231. 2 的冪力扣
- 力扣之有效的迴文力扣
- 力扣題解-387. 字串中的第一個唯一字元力扣字串字元
- 力C演算法JS:1544. 整理字串演算法JS字串
- 力扣社群開通力扣
- 力扣-9.23-680力扣