目录
题目描述:
函数将字符串中的字符“*移到串的前部分,前面的非"*"字符后移,但不能改变非*字符的先后顺序,函数返回串中字符”的数量。如原始串为: ab**cd**e*12处理后为*****abcde12,函数并返回值为5。要求使用尽量少的时间和辅助空间。// 实现该函数
int Change(char *Str);
题目分析:
要求尽量少的时间和辅助空间:
那就得尽量只使用一层循环搞定,并且直接在原字符串上进行操作即可;
因为题目需要把*号挪到前面,那我们完全可以考虑把非*号的字符往后移,然后剩下的前面的内容直接使用*号来覆盖即可。
代码实现:
int Change(char *str)
{
int j = strlen(str) - 1;
int index = j;
for (; j >= 0; j--){
if (str[j] !