c++ 华为练习 四 删除字符串中的指定字符
2014-04-06 00:23
302 查看
#include <iostream> using namespace std; int main(void){ char a[100]; char b[100]; cin.getline(a,100); cin.getline(b,100); int an=0; //int bn=0; bool charninb[26]; for(int i=0;i<100;i++){ if(a[i]!='\0')an++; if(b[i]!='\0'){ // bn++; if(b[i]>='a'&&b[i]<='z'){ charninb[b[i]-'a']=false; } } } char out[100]; int k=0; for(int i=0;i<an;i++){ if(charninb[a[i]-'a']) out[k++]=a[i]; } out[k]='\0'; cout<<out<<endl; cin>>a; return 0; }不知道它用的声明高端的测试用例,使我这个答案出错了额,华为究竟用的什么用例呢,就算我把它改为 在一行 输入两个句的情况,用cin读入,读每一行时连对应所有的字符包括空格都删除,用cin.getline读入,甚至尝试读入长度10000的字符串,结果都错了。那是哪里有问题呢?
我还对连续输入多行,一行为a,一行为b的情况也进行了判断,还是无法得到正确结果。
#include <iostream>
using namespace std;
int main(void){
char a[1000];
char b[1000];
// cin>>a;
//cin>>b;
cin.getline(a,1000);
cin.getline(b,1000);
//for(int i=0;i<80;i++)
// b[i]=a[i+80];
/*
char c;
int n=0;
while(cin>>c){
if(c!='\n'&&c!='\0'){
a[n++]=c;
}else
break;
}
a
='\0';
n=0;
while(cin>>c){
if(c!='\n'&&c!='\0'){
b[n++]=c;
}else
break;
}
b
='\0';
*/
int an=0;
//int bn=0;
bool charninb[126];
for(int i=0;i<1000;i++){
if(a[i]!='\0')an++;
if(b[i]!='\0'){
// bn++;
if(b[i]>=1&&b[i]<=126){
charninb[b[i]]=false;
}
}
}
char out[1000];
int k=0;
for(int i=0;i<an;i++){
if(charninb[a[i]])
out[k++]=a[i];
}
out[k]='\0';
cout<<out<<endl;
return 0;
}
相关文章推荐
- c++实现删除字符串前后指定字符
- 【C编程练习】华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符,函数原型为:char * delChar(char *s,int iLen)
- c/c++整理--实现删除字符串所有指定字符
- c++在字符中删除指定字符串
- [算法练习]将字符串中*提前&&删除指定字符
- 删除字符串中的指定字符
- 数组和字符串操作(C#) 1、从字符串中删除指定字符
- 字符串的一些基本操作,复制,长度,子串查找,单词反转,比较,字符串反转,删除指定字符。
- C++学习:去掉字符串的首尾指定字符
- 删除字符串中指定字符
- 删除字符串中指定位置的字符
- 删除指定字符c++代码实例及运行结果
- C++求解字符串(最小子字符串,最大子字符串,删除指定字符串)
- 【我解C语言面试题系列】010 从相应位置开始删除指定字符串的相应个字符
- 删除字符串中指定的字符形成字符串
- 华为OJ—字符串排序(排序,忽略指定字符排序)
- 字符串中删除指定的字符的理解
- 从字符串的指定位置开始,删除指定长度字符
- c++删除指定字符串之间的内容(比正则表达式快几十倍)[转]
- C/C++/VC 获取指定字符在字符串中的出现次数