题目:
编写字符串处理函数,将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)
Again!
//将字符串中的字符'*'移到串的前部分,保证非*字符的顺序位置不能变
void partitionStar(char* str)
{
int len = strlen(str);
int i = len - 1;
int j = len - 1; // j指向第一个'*'
int count = 0;
while (i >= 0)
{
if (str[i] == '*')
{
i--; count++;
}
else
{
swap(str[i], str[j]);
i--; j--;
}
}
}
void main()
{
char str[] = "ab**cd*e1";
partitionStar(str);
cout << str << endl;
}