Cho chuỗi chứa chữ cái và số. Sắp xếp chữ cái theo thứ tự bảng chữ cái, cộng tất cả số nguyên, nối kết quả sau chuỗi chữ cái. Ví dụ:
Input: "adv4fc3" → "acdfv7" (4+3=7) Input: "h2d7e3f" → "defh12" (2+7+3=12)
Thuật toán
- Mảng
count[26]đếm tần suất mỗi chữ cái. - Biến
sumcộng dồn các chữ số. - Duyệt chuỗi: nếu chữ cái → tăng count; nếu số → cộng vào sum.
- Xây chuỗi kết quả: thêm từng chữ cái theo count, cuối cùng thêm
to_string(sum).
Ví dụ
#include<bits/stdc++.h>
using namespace std;
const int MAX_CHAR = 26;
int main() {
string str = "h2d7e3f";
int ch[26] = {0}, sum = 0;
for (char c : str) {
if (c >= 'a' && c <= 'z') ch[c - 'a']++;
else sum += c - '0';
}
string final = "";
for (int i = 0; i < 26; i++) {
char a = 'a' + i;
while (ch[i]-- > 0) final += a;
}
if (sum > 0) final += to_string(sum);
cout << "Rearranged string: " << final;
return 0;
}
Kết quả
Rearranged string: defh12
Kết luận
Sắp xếp chữ cái + cộng số trong chuỗi: counting sort O(n) cho chữ cái, cộng dồn số. Code C++.