牛客网-华为在线编程-009-提取不重复的整数(字符串)
来源:互联网 发布:今日热点是什么软件 编辑:程序博客网 时间:2024/06/05 10:28
题目描述
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
示例1
输入
9876673
输出
37689
#include<iostream>using namespace std;int main(){ int n; int a[10]={0}; int num=0; cin>>n ; while(n) { if(a[n%10]==0) { a[n%10]++;//这一步是更新,遇到下次相同的数会跳过 num=num*10+n%10; } n/=10; } cout<<num<<endl; return 0;}
说明:程序中申请了一个数组a[10] = 0; 以此来给整数的每一位打标签,判断是否已经存在。
解题思路二:将数字输入为字符串,遍历字符串的每一位避免了取模操作;然后将每一位字符转换为数值型的作为数组下标,从而实现打标签的目的。
#include <iostream>#include <string>using namespace std;int main(){ int m, i; int a[10] = {0}; string str; getline(cin, str); m = str.size(); for (i = m - 1; i >= 0; i--) { if (a[str[i] - '0'] == 0) { cout << str[i]; a[str[i] - '0']++; } } return 0;}
解题思路三:将一个整数当做一个字符串,然后遍历每一个字符,找到不重复的字符放到一个新的数组中,然后一个接一个比较下一个字符是否已经存在与新的数组中,这里运用了string.find()函数来判断是否重复,搜索操作的具体用法详见C++primer P325(额外的string操作)。该方法不但适用于整数的去重,还适用于字符串的去重,具有通用性。
#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;}
说明:注意str.find()的返回值,搜索操作返回指定字符出现的下标,如果未找到则返回npos,一般npos为-1,但也不是绝对的。
阅读全文
0 0
- 牛客网-华为在线编程-009-提取不重复的整数(字符串)
- 华为在线编程系列-提取不重复的整数
- 牛客网华为在线训练---提取不重复的整数
- 华为在线编程试题 -- 提取不重复整数
- 华为机试在线训练-牛客网(6)提取不重复的整数
- 华为OJ在线测试题--提取不重复的整数
- 【华为oj】提取不重复的整数
- 【华为oj】提取不重复的整数
- 华为oj: 提取不重复的整数
- 【华为 OJ】 提取不重复的整数
- 【华为OJ9】提取不重复的整数
- 华为OJ:提取不重复的整数
- 华为 提取不重复的整数
- 【华为OJ】【009-提取不重复的整数】
- 华为OJ(提取不重复的整数)
- 《华为机试在线训练》之提取不重复的整数
- [编程题]提取不重复的整数
- 提取不重复的整数(编程题)
- gitingnore忽略提交文件配置
- JSTL标签
- python通过testrpc访问以太坊数据入门
- 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- c++输入函数小结
- 牛客网-华为在线编程-009-提取不重复的整数(字符串)
- Thread源码分析和小结
- 案例 | 巴别鸟为弘睿构建企业知识库
- 深入解析AIDL的实现:Messenger
- express 热部署,修改不重新启动
- SQL(高级查询)
- 第10章 通过Spring和JDBC征服 数据库
- 什么有那么多人选择Python,真的有那么好吗?
- php常见header状态