华为OJ中级题-字符串排序

编写一个程序,将输入字符串中的字符按如下规则排序。

规则1:英文字母从A到Z排列,不区分大小写。

如,输入:Type 输出:epTy

规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。

如,输入:BabA 输出:aABb

规则3:非英文字母的其它字符保持原来的位置。

如,输入:By?e 输出:Be?y

void TestChar()
{
	string test = "tBay?fze";
	cout << test << endl;
	int len = test.length();
	int i, j, tmp;
	for (i = 0; i < len; ++i){
		for (j = i ; j < len-1; ++j){
			int k = j;
			if (isalpha(test[j]))
			{
				while (!isalpha(test[k + 1])) //预判
					k++;
				if (tolower(test[j]) > tolower(test[k + 1]))
				{
					tmp = test[j];
					test[j] = test[k + 1];
					test[k + 1] = tmp;
				}
			}
			else continue;
		}
	}
	cout << test << endl;
}
运行结果;

华为OJ中级题-字符串排序_第1张图片

你可能感兴趣的:(C++,排序)