给一包含大写字母和整数(从 0
到 9
)的字符串, 试写一函数返回有序的字母以及数字和.
样例
给出 str = AC2BEW3
, 返回 ABCEW5
字母按字母表的顺序排列, 接着是整数的和(2 和 3).
解题思路:
扫描一遍字符串,将字符部分提取出来然后排序,将数字部分提取出来加法,最后将li两部分合并即可。
class Solution {
public:
/**
* @param str: a string containing uppercase alphabets and integer digits
* @return: the alphabets in the order followed by the sum of digits
*/
string rearrange(string &str)
{
// Write your code here
if(str.empty())
return str;
string str1;
int num = 0;
for(char c : str)
{
if(c>='A' && c<='Z')
str1.push_back(c);
else
num += (c - '0');
}
sort(str1.begin() , str1.end());
str1 += to_string(num);
return str1;
}
};
排序算法如果要求自己写的话,添加了插入排序,如下:
class Solution {
public:
/**
* @param str: a string containing uppercase alphabets and integer digits
* @return: the alphabets in the order followed by the sum of digits
*/
string rearrange(string &str)
{
// Write your code here
if(str.empty())
return str;
string str1;
int num = 0;
for(char c : str)
{
if(c>='A' && c<='Z')
{
str1.push_back(c);
int p = str1.size()-1;
for(int i = p - 1; i >= 0 && str1[p] < str1[i];i--)
{
swap(str1[p] , str1[i]);
p = i;
}
}
else
num += (c - '0');
}
str1 += to_string(num);
return str1;
}
};