200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 字符串排序(英文字母从 A 到 Z 排列 不区分大小写;同一个英文字母的大小写同时

字符串排序(英文字母从 A 到 Z 排列 不区分大小写;同一个英文字母的大小写同时

时间:2019-06-21 10:37:19

相关推荐

字符串排序(英文字母从 A 到 Z 排列 不区分大小写;同一个英文字母的大小写同时

#include <iostream>#include <string>#include <algorithm>#include <vector>using namespace std;//编写一个程序,将输入字符串中的字符按如下规则排序。//规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy//规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。//如,输入: BabA 输出: aABb//规则 3 :非英文字母的其它字符保持原来的位置。//如,输入: By?e 输出: Be?y//大写字母:65-90 小写字母:97-122int main(){string str;//cin>>str;//会报错 只输出Agetline(cin,str);int len = str.length();vector <char> vec; //用一个 char 型的向量存储按规则排序后的字符串中的字母字符//规则一:英文字母从 A 到 Z 排列,不区分大小写。//规则二:同一个英文字母的大小写同时存在时,按照输入顺序排列。for (int j = 0; j < 26; j++){for (int i = 0; i < len; i++){if ((str[i] - 'a' == j) || (str[i] - 'A' == j)){vec.push_back(str[i]); //将符合规则的字母字符先后写入向量}}}//规则三:非英文字母的其它字符保持原来的位置。for(int i = 0,k = 0;(i < len) && (k < vec.size()); i++){if((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')){str[i] = vec[k++];//若是字母,则存入字符串}// if(isalpha(str[i]))//判断是否为字母// {// str[i] = vec[k++];// }}cout<<str<<endl;return 0;}解法2// #include <iostream>// using namespace std;// int main(){//string str;//char out[1000];//int k = 0;//getline(cin, str);//for(int i = 0; i < 26; ++i)// for(int j = 0; j < str.size(); ++j)// if(str[j]-'a'==i || str[j]-'A'==i)// out[k++] = str[j];//k = 0;//for(int i = 0; i < str.size(); ++i)// if(isalpha(str[i]))// str[i] = out[k++];//cout << str;// }

字符串排序(英文字母从 A 到 Z 排列 不区分大小写;同一个英文字母的大小写同时存在时 按照输入顺序排列)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。