提取不重复的整数
输入int型的整数————9876673
从右往左输出,不重复的新整数————37689
//方法一:将原int型整数以string类型输入,用一个vector对重复的字符进行操作,最后输出
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
string s;
cin >> s;
vector<char> res;
for(int i = s.size()-1; i >= 0; i--){
if(find(res.begin(),res.end(),s[i]) != res.end()){
continue;
}
res.push_back(s[i]);
cout << s[i];
}
}
//方法二:用类似hash表的概念,用数组判定重复出现的数字,如果重复出现直接pass,/10进入下一数字
//同时加上其实条件的判定之后更加完善
#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)
{
if(num == 0 && n % 10 == 0){
a[n%10]=0;
}
else{
a[n%10]++;//这一步是更新,遇到下次相同的数会跳过
num=num*10+n%10;
}
}
n/=10;
}
cout<<num<<endl;
return 0;
}
// 方法三:还是输入整数,但是转换成string类型进行处理,最后输出整型,防止有些判题,必须是整数输入输出
#include<bits/stdc++.h>
using namespace std;
int main() {
int nums; cin >> nums;
string str = to_string(nums);
unordered_set<char> set;
reverse(str.begin(), str.end());
string res;
for(char c : str)
if(set.count(c) != 1) {
res += c;
set.insert(c);
}
cout << stoi(res) << endl;
return 0;
}
京公网安备 11010502036488号