免费行情软件网站大全下载,方向专业网站制作咨询,用宝塔给远程网站做备份,wordpress重新生成缩略图描述
编写一个程序#xff0c;将输入字符串中的字符按如下规则排序。 规则 1 #xff1a;英文字母从 A 到 Z 排列#xff0c;不区分大小写。 如#xff0c;输入#xff1a; Type 输出#xff1a; epTy 规则 2 #xff1a;同一个英文字母的大小写同时存在时#xff0c;…描述
编写一个程序将输入字符串中的字符按如下规则排序。 规则 1 英文字母从 A 到 Z 排列不区分大小写。 如输入 Type 输出 epTy 规则 2 同一个英文字母的大小写同时存在时按照输入顺序排列。 如输入 BabA 输出 aABb 规则 3 非英文字母的其它字符保持原来的位置。
如输入 By?e 输出 Be?y 数据范围输入的字符串长度满足 1≤n≤1000 输入描述
输入字符串
输出描述
输出字符串
示例1
输入
A Famous Saying: Much Ado About Nothing (2012/8).输出
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
思路
根据三个规则规则1要对字母进行排序不区分大小写这个通过sort函数加重写cmp完成规则2要按照输入时的顺序进行排序那么就要记录这个字母的位置可以用结构体完成规则3就直接把非字母跳过就行。
代码
#includebits/stdc.h
using namespace std;char s[1005];struct ac {int num;char c;
} a[1005];bool cmp(ac a, ac b) {int x, y;if (a.c a a.c z)x a.c - a;elsex a.c - A;if (b.c a b.c z)y b.c - a;elsey b.c - A;if (x y)return a.num b.num;elsereturn x y;
}int main() {int i, j 0, k 0;string str;getline(cin, str);for (i 0; i str.length(); i) {if (str[i] a str[i] z || str[i] A str[i] Z ) {a[j].c str[i];a[j].num i;j;}}sort(a, a j, cmp);for (i 0; i str.length(); i) {if (str[i] a str[i] z || str[i] A str[i] Z ) {cout a[k].c;k;} elsecout str[i];}return 0;
}