题目:字符串去符号。
将输入的一串字符串中的标点符号都删掉。
输入样例:
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); }