把*号放开头

一个字符串只包含和数字,请把都放开头

法一 快排思想 相对位置变了

循环不变法:[0…i-1]都是* [i…j]都是数字 [j…n-1]未探测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[20];
cin>>str;
int n=strlen(str);
for(int i=0,j=0;j<n;j++)
{
if(str[j]=='*')
{
char t=str[i];
str[i]=str[j];
str[j]=t;
i++;
}
}
cout<<str<<endl;


return 0;
}

法二:数字相对顺序不变

倒着

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[20];
cin>>str;
int n=strlen(str);
int i=n-1;
for(int j=i;j>=0;j--)
{
if(str[j]!='*')
str[i--]=str[j];
}
for(int k=0;k<=i;k++)
str[k]='*';
cout<<str<<endl;


return 0;
}