【华为 OJ 】字符串排序

来源:互联网 发布:umts是什么网络类型 编辑:程序博客网 时间:2024/05/15 18:30

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

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

      如,输入:Type 输出:epTy

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

    如,输入:BabA 输出:aABb

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

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

样例:

    输入:

   A Famous Saying: Much Ado About Nothing(2012/8).

    输出:

   A aaAAbc dFgghhiimM nNn oooos Sttuuuy (2012/8).



输入描述:



输出描述:


输入例子:
A Famous Saying: Much Ado About Nothing (2012/8).

输出例子:

A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

#include <iostream>#include <string>using namespace std;int main()//字符串排序{    string str;    while (cin >> str)        {    string s1;    char s;    //将字母单独提取出来    for (int i = 0; i < str.length(); i++)    {        if (isalnum(str[i]))            s1 += str[i];    }    //对字母进行排序    int len = s1.length();    for (int i = 0; i < len - 1; i++)    {        for (int j = len - 1; j > i; j--)        {            if (toupper(s1[j - 1])>toupper(s1[j]))            {                s = s1[j];                s1[j] = s1[j - 1];                s1[j - 1] = s;            }        }      }    //将原字符串中的字母换成排序后的    int k = 0;    for (int i = 0; i < str.length(); i++)    {        if (isalpha(str[i]))        {            str[i] = s1[k];            k++;        }    }    cout << str << endl;    }    return 0;}


0 0