字符串为*号和26个字母、阿拉伯数字的任意组合,把*号都移动到最左侧,把其他字母和数字都移到最右侧并保持相对顺序不变,返回字符*的个数,要求时间和空间复杂度最小。
同时请参考: http://blog.csdn.net/hackbuteer1/article/details/8035261
// char_start.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "string.h"
// a b * * c d * e * a * f g * * * h *
//
void reSort(char *Array, int n)
{
char *pCur;
char *pCopy;
int count = 0;
pCur = pCopy = &Array[n-1];
while (pCur >= Array)
{
if (*pCur == '*')
{
count++;
}
else
{
*pCopy-- = *pCur;
}
pCur--;
}
for(int i=0; i<count; i++)
Array[i] = '*';
}
int _tmain(int argc, _TCHAR* argv[])
{
char myArray[] = {"ab**cd*e*a*fg***h*"};
int len = strlen(myArray);
reSort(myArray, len);
return 0;
}