一个字符串只包含星号和数字,请把它的*都放在开头
方法1:快排的partition ——数字相对顺序发生改变
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
char str[]="*01*2*4";
int len=strlen(str);
for(int i=0,j=0;j<len;j++){
if(str[j]=='*') {
swap(str[i++],str[j]);
}
}
puts(str);
}
方法2:倒着复制 ——数字相对顺序不发生改变
#include<cstdio>
#include<cstring>
#include<cctype>
int main(){
char str[]="*01*2*4";
int len=strlen(str);
int j=len-1;
for(int i=len-1;i >=0;--i){
if(isdigit(str[i]))
str[j--]=str[i];
}
for(;j>=0;j--){
str[j]='*';
}
puts(str);
}