解析:可以将整个字符数组进行排序,然后将整个数组逆序,然后a-z、A-Z、0-9在分别逆序就可以了
-
-
-
#include <iostream>
-
#include <cstring>
-
#include<algorithm>
-
using namespace std;
-
-
void reverse_aA0(char arr[], unsigned int length)
-
{
-
sort(arr, arr + length);
-
reverse(arr, arr + length);
-
unsigned int i = 0, j = 0;
-
for (i=0; i < length; ++i)
-
if (arr[i] >= ‘A‘ && arr[i] <= ‘Z‘)
-
{
-
break;
-
}
-
reverse(arr, arr + i);
-
-
for (j=i; j < length; ++j)
-
{
-
if (arr[j] >= ‘0‘ && arr[j] <= ‘9‘)
-
{
-
break;
-
}
-
}
-
reverse(arr + i, arr + j );
-
reverse(arr + j, arr + length);
-
-
}
-
-
int main()
-
{
-
char arr[20] = "BACDQFHG";
-
reverse_aA0(arr, strlen(arr));
-
cout << arr << endl;
-
return 0;
-
}
关于sort()函数用法可以参考我的http://blog.csdn.net/u014082714/article/details/44778877
类似面试题http://blog.csdn.net/u014082714/article/details/44339993
一道经典面试题,字符数组排序问题(字符包含a-z、A-Z、0-9.)
原文:http://blog.csdn.net/u014082714/article/details/44985405