字符串处理

来源:互联网 发布:c语言 map 编辑:程序博客网 时间:2024/06/05 09:50

一个字符串,压缩其中的连续空格为1个后,对其中的每个字串逆序打印出来。比如"abc   efg  hij"打印为"cba gfe jih"。

void handleNonSpace(char a[], int begin, int end, int &q){    int len = end - begin + 1;    int k = begin;    while (begin < end)    {        swap(a[begin], a[end]);        begin++;        end--;    }    if (k != q)    {        for (int i = q; i < q+len; i++)        {            a[i] = a[k];            k++;        }    }    q += len;}void fun(char a[]){    int len = strlen(a);    int p = 0;    int begin = -1;    int end = -1;    int q = 0;    bool spaceFound = false;    while (p < len)    {        if (a[p] == ' ')        {            if (begin != -1)            {                handleNonSpace(a, begin, end, q);                begin = -1;            }            spaceFound = true;        }        else        {            if (spaceFound)            {                a[q] = ' ';                q++;                spaceFound = false;            }            if (begin == -1)            {                begin = p;            }            end = p;        }            p++;    }    if (begin != -1)    {        handleNonSpace(a, begin, end, q);    }    else    {        a[q] = ' ';        q++;    }    a[q] = '\0';    cout << a << endl;}


0 0
原创粉丝点击