分享

数字,字母,其他字符的排序

 haiqing1988 2011-11-06
str为任意字符串,如:“asfdf12fdf65*()&4fyak%”,要求ReArrange函数把str进行原地重新排列,数字在最前面,英文字符居中,其他字符在后。空间复杂度为O(1),时间复杂度为O(n)。

#include <iostream> #include <ctype.h> using namespace std; // void ReArrange(char *begin, char*end) { char *p, *digit , *other; //指针digit指向最后一个数字,指针other指向第一个非字母数字 digit = begin - 1; other = end + 1; for (p = begin; p != other; ++p) { if (isalpha(*p)) //如果是字母 NULL; else if (isdigit(*p))//如果是数字,与第一个字母(即digit+1)互换 { digit++; swap(*p, *digit); } else //如果是其他符号,与最后那个字母(即other-1)互换 { other--; swap(*p, *other); p--; } } } int main() { char data[]="asfdf12fdf65*()&4fyak%"; ReArrange(data, data+strlen(data)-1); cout << data << endl; return 0; }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多