牛客网-华为在线编程-010-字符个数统计
来源:互联网 发布:8月美国非农数据预测 编辑:程序博客网 时间:2024/05/20 15:36
题目描述
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
输入描述:
输入N个字符,字符在ACSII码范围内。
输出描述:
输出范围在(0~127)字符的个数。
示例1
输入
abc
输出
3
#include <iostream>#include <string>using namespace std;int main(){ string s; int i = 0; cin>>s; int n = 0; n = s.size(); string str(s,n-1); for(i=n-1;i>=0;i--) { if(str.find(s[i]) == -1) { str = str+s[i]; } } cout<<str.size()<<endl;}解题思路二:遍历ASCII码(0~127),对比每个ASCII码是否存在于字符串中,如果存在,则计数count++。
#include <iostream>#include <string>using namespace std; int main() { string b; getline(cin,b); int count=0; for(int i=0;i<=127;i++) if(b.find(i)!=string::npos) count++; cout<<count;}说明:1)这里是遍历ASCII,不是字符串。2)b.find(i),其中i是ASSCII码,指向一个对应的字符。3)注意string.find() 搜索不到时的返回npos,这里没有使用-1而是使用的string::npos,更为严谨。
解题思路三:同样是打标签的方法,利用数组下标给每个输入的字符打标签,然后遍历ASCII码(0~127)进行对比计数。
#include <iostream>using namespace std; int main(){ char ch; int arr[128]={0}; int count=0; while(cin>>ch){ if(ch>=0 && ch<=127){ arr[ch]++; } } for(int i=0;i<128;i++){ if(arr[i]>0) count++; } cout<<count<<endl; return 0;}说明:1)char ch;while(cin>>ch),是每一次提取一个输入字符;string str;while(cin>>str),这里是读入字符串,注意”空格是cin的分隔符“,所以输入的字符串遇到空格就不继续存入str,空格后再次输入将会更新覆盖str的值,见点击打开链接中的相关讨论;而getline(cin,str)是读取一整行字符串,不受空格影响。2)if(ch>=0 && ch<=127)是拿ch的ASCII码与(0~127)作比较。3)arr[ch]也是以字符的ASCII码作为数组的下标。
解题思路四:类似方法一。
链接:https://www.nowcoder.com/questionTerminal/eb94f6a5b2ba49c6ac72d40b5ce95f50来源:牛客网/*C++输入字符,ascii值在[0,127]时插入集合set中,输出set中的元素个数。*/#include<iostream>#include<set>using namespace std;int main(){ char c; set<char> s; while(cin>>c){ if(c>=0 && c<=127){ s.insert(c); } } cout << s.size() <<endl;}
注意:本题中用while(cin>>ch)实际上不是完全正确的,牛客网的测试用例存在bug,没有考虑空格的情况,严格来讲空格(space)属于ASCII码(0~127),ASCII码为032,所以使用getline(cin>>str)较好。
阅读全文
0 0
- 牛客网-华为在线编程-010-字符个数统计
- 华为在线编程-字符个数统计
- 牛客网华为在线训练---字符个数统计
- 《华为机试在线训练》之字符个数统计
- 牛客网华为在线训练---计算字符个数
- 华为机试在线训练-牛客网(7)字符个数统计
- 【华为OJ】【010-字符个数统计】
- [华为OJ--C++]010-字符个数统计
- 【华为OJ】统计字符个数
- 华为 OJ 字符个数统计
- 【华为 OJ 】字符个数统计
- 【华为OJ10】字符个数统计
- java--------------华为--------------------字符个数统计
- 华为面试---字符个数统计
- 牛客网三道编程题(三 之华为机试在线训练(二)字符串反转、统计不同字符个数、删除字符串中出现最少的字符
- 牛客网_华为机试_010_字符个数统计
- 华为机试在线训练-牛客网(40)字符统计
- 华为在线训练之计算字符个数
- libsvm中OC-SVM 调参问题
- 记一次rsyslog日志记录失败的解决过程
- Ubuntu 14.04 中 svn学习
- 委托,事件,回调,匿名函数与Lambda表达式详解
- Docker--安装
- 牛客网-华为在线编程-010-字符个数统计
- python基础——变量和表达式
- Android提交mvn
- ArcGIS Server无法注册Oracle一例
- 无法连接到“https://www.nuget.org/api/v2/”中指定的源
- Impala查询详解第一篇——简介
- 设置环境变量
- vb.net 教程 4-2 目录操作 DirectoryInfo 3 篇外
- JAVA微信开发之weixin4j入门视频