携程笔试中的一道编程题

题目:字符串去符号。

将输入的一串字符串中的标点符号都删掉。

输入样例:
String:a1,b2.c3-d4!

输出样例:
Stringa1b2c3d4

最一开始想到的就是剑指offer中的{面试题4:替换空格}

时间也很紧就大概想了想没有怎么认真考虑。

结果出现覆盖现象。

然后我就换成了两个数组一个遍历一个赋值。

代码如下:

#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
#include<string>
 
 
using namespace std;
#define N 100
 
 
char*  change(char putin[],int n)
{
    if(putin == NULL)
        return NULL;
    int strcount = 0;
    for(int i = 0;i<n;++i)
    {
        if((putin[i]>='a'&&putin[i]<='z')||(putin[i]>='A' && putin[i]<='Z')||(putin[i]>='0'&&putin[i]<='9'))
            ++strcount;
    }
    int p1 = n-1;
    int p2 = strcount-1;
    char *putout = new char[strcount];
    putout[strcount] = '\0';
    while( p2>=0)
    {
        if((putin[p1]>='a'&&putin[p1]<='z')||(putin[p1]>='A' && putin[p1]<='Z')||(putin[p1]>='0'&&putin[p1]<='9'))
        {
            putout[p2--] = putin[p1--];
        }
        else
        {
            --p1;
        }
    }
    return putout;
}
int main()
{
    char putin[N];
    char *putout;
    gets(putin);
    int n = strlen(putin);
    putout = change(putin,n);
    puts(putout);
}

猜你喜欢

转载自www.cnblogs.com/cjn123/p/10666249.html