编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string AlphaSort(string line)
{
vector<string> alphabet(26);
string AlphaStr;
string SortedStr;
for (auto &c : line)
{
if (isalpha(c))
alphabet[tolower(c) - 'a'] += c;
}
for (auto &s : alphabet)
AlphaStr += s;
for (int i = 0, j = 0; i < line.size(); i++)
SortedStr += isalpha(line[i]) ? AlphaStr[j++] : line[i];
return SortedStr;
}
int main()
{
string line;
while(getline(cin, line))
{
cout << AlphaSort(line) << endl;
}
}