题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
// #include <bits/stdc++.h> #include <iostream> #include <vector> using namespace std; string my_string_sort(string s){ vector<char> my_vec; int n = s.length(); // 按顺序把字符填进去aAAabBbb这种的,时间复杂度为26 * n // 这样就满足规则1和规则2 for(int i = 0; i < 26; i++){ for(int j = 0; j < n; j++){ if(s[j] - 'A' == i || s[j] - 'a' == i){ my_vec.push_back(s[j]); } } } // 按照位置一个一个填进去。 for(int i = 0, k = 0; i < n && k < my_vec.size(); i++, k++){ while((s[i] < 'a' || s[i] > 'z') && (s[i] < 'A' || s[i] > 'Z' )){ i++;// 如果遇到非a-z A-Z的字符就+1直到遇到可以填字符的位置,然后填字符就行 } s[i] = my_vec[k]; } return s; } int main() { string s; getline(cin, s); s = my_string_sort(s); cout << s; } // 64 位输出请用 printf("%lld")