目录
牛客_HJ9提取不重复的整数_模拟
描述:
输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
保证输入的整数最后一位不是 0 。
数据范围: 1≤n≤10^8
输入描述:
输入一个int型整数
输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数
题目解析
简单模拟,用到一点数学。首先循环提取输入数的最低位,维护一个大小为10的数组,判断数组中是否有提取的这个数位。
- 如果有则把输入数除等于10,继续提取下一数位。
- 如果没有仍要把输入数除等于10,并将此数位添加到数组中,结果乘10再加上此数位。
- 提取到最高位即可输出结果。
C++代码
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<bool> arr(10, false);
string str, ret;
cin >> str;
for(int i = str.size() - 1; i >= 0; --i)
{
if(arr[str[i] - '0'] == false)
{
ret += str[i];
arr[str[i] - '0'] = true;
}
}
cout << atoi(ret.c_str()) << endl;
return 0;
}
Java代码
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
char[] s = in.next().toCharArray();
boolean[] hash = new boolean[10];
for(int i = s.length - 1; i >= 0; i--)
{
int x = s[i] - '0';
if(!hash[x])
{
System.out.print(x);
hash[x] = true;
}
}
}
}