算法--将字符串中*号移到左边,字母移到右边,保持字母相对顺序不变

来源:互联网 发布:淘宝卖家设置红包3元 编辑:程序博客网 时间:2024/06/08 19:46

这是一个O(n)时间复杂度实现的,看代码应该可以明白

#include<stdio.h>void Swap(char& a, char& b){a=a^b;b=a^b;a=a^b;}char* StrMv(char* str, int n){int high=0;int i=n-2;while(*(str+i)!='*') i--;high=i;while(i>=0){if(*(str+i)=='*') i--;else{Swap(*(str+i), *(str+high));high--;}}return str;}int main(int argc, char** argv){char str[61]="******ab*cd**dn**gedt**kfhjk*f***k****mg**j*afa*ik****adfa**";printf("%s\n", StrMv(str, 61));return 0;}


0 0