给一包含大写字母和整数(从 0 到 9)的字符串, 试写一函数返回有序的字母以及数字和.
样例
样例 1:
输入 : str = "AC2BEW3"
输出 : "ABCEW5"
说明 :
字母按字母表的顺序排列, 接着是整数的和(2 和 3)。
思路:建立两个字符串result和num,把str中字符是字母的直接添加进result,数字而相加后赋给sum,再将result进行排序,再把sum转化为字符串num,返回result加上num即可
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
string result="";
string num="";
int len=str.size();
int sum=0;
for (int i = 0; i < len; i++) {
/* code */
if(isalpha(str[i])) result+=str[i];
else sum+=str[i]-'0';
}
sort(result.begin(),result.end());
while(sum!=0)
{
num.insert(num.begin(),48+sum%10);
sum/=10;
}
result+=num;
return result;
}
};
或者直接利用迭代器添加进result
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
string result="";
int len=str.size();
int sum=0;
for (int i = 0; i < len; i++) {
/* code */
if(isalpha(str[i])) result+=str[i];
else sum+=str[i]-'0';
}
sort(result.begin(),result.end());
string::iterator it=result.end();
while(sum!=0)
{
result.insert(it,48+sum%10);
sum/=10;
}
return result;
}
};