iterator level
获赞
94
粉丝
7
关注
0
看过 TA
25
Macquarie University
2017
算法工程师
IP属地:加拿大
暂未填写个人简介
私信
关注
2021-12-24 06:11
已编辑
Macquarie University 算法工程师
题目链接|提取不重复的整数 题意:输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是 0 。 数据范围: 1≤n≤1081\leq n\leq 10^81≤n≤108 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 方法一:使用数组记录每个数字是否已经出现 (哈希表思想) 因为字符串的范围在0~9,最多只有10种字符。可以从右向左取出数字的每一位,并维护一个数组记录,当前数字是否已经出现。如果当前字符已经出现,该数字不输出,如果当前字符没有出现过,将记录的数组设成1,并输出当前...
值符:看了你的讲解很有启发,不过方法一好像有些问题,int ans=0;int vis[12]={0};string str;这三个作为全局变量能够通过测试,但是作为局部变量就会出错。经过调试发现int num=(int)str[i];中num得到的是0-9对应的ascall码,数值都在48-57之间。上面数组作为局部变量时因为vis[48-57]的位置未初始化为0,所以不能通过测试,而数组作为全局变量时48-57的位置会自动初始化为0,即使数组下标错误也能得到正确结果。改良的方法是(int)str[i]; int num = str[i] - '0';将num由ascall码转化为对应的字符。
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务