编码完成下面的处理函数。
函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)
思路:从后往前处理,字符串的题目第一反应考虑能不能反着处理
int FuncStr(char* str)
{
int len = strlen(str);
char* p1 = str + len -1;
char* p2 = str + len -1;
while (p1>=str)
{
if(*p1 != '*')
*p2-- = *p1;
p1--;
}
int ans = p2 - p1;
while (p2>=str)
{
*p2-- = '*';
}
return ans;
}