您的位置:首页 > 其它

将字符串中的字符'*'移到串的前部分,保证非*字符的顺序位置不能变

2015-09-17 22:58 369 查看
题目:

编写字符串处理函数,将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为: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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: