
题目
解决代码及点评
/*
函数将字符串中的字符'*' 移到串的前部分
但是不能改变非*字符的顺序,比如a**b**c**经过变化后是******abc
如果没有顺序的需求,那么只要跟奇偶站队一样进行交换
*/
#include <iostream>
using namespace std;
void ChangeStr(char *pszBuf)
{
int nLen = strlen(pszBuf);
int i = nLen - 1;
int j = nLen - 1;
// 从尾巴上开始遍历
while (i >= 0)
{
// 如果i不是*号,那么拷贝到j位置,并且j--
if (pszBuf[i] != '*')
{
pszBuf[j--] = pszBuf[i];
}
// 如果i位置上是不是*号,那么i都得继续往前移动
// 这样的结果是i和j步调不一致
i--;
}
// 最后j剩下的位置都填写上*号即可
while (j >= 0)
{