您的位置:首页 > 其它

利用O(1)空间复杂度对字符串排序(人人)

2016-09-10 18:39 204 查看
将字符串中字符按照“小写、大写、数字、符号”的顺序排列,要求利用O(1)的空间复杂度。

其中ASCII(小写)> ASCII(大写)> ASCII(数字)

符号要做特殊处理。

利用sort()函数,修改cmp(),进行排序。

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

void change(string &str);

int main()
{
string str1;
while(cin >> str1)
{
change(str1);
cout << str1 << endl;
str1.clear();
}

return 0;
}

bool isFlag(char c)
{
if((c >= '0'&&c <= '9')||(c >='A'&&c <= 'Z')||(c >= 'a'&&c <='z'))
return false;
else
return true;
}

int cmp(char const &a,char const &b)
{
if(isFlag(a))   //凡是符号全部排序到最后
return 0;
else if(isFlag(b))
return 1;
else
{
if(a > b)
{
return 1;
}
else
return 0;
}
}

void change(string &str)
{
sort(str.begin(),str.end(),cmp);
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ascii