千家信息网

Java如何提取不重复的整数

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,本篇内容介绍了"Java如何提取不重复的整数"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、题目描
千家信息网最后更新 2024年11月15日Java如何提取不重复的整数

本篇内容介绍了"Java如何提取不重复的整数"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、题目描述

输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

输入描述:

输入一个int型整数

输出描述:

按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

输入例子:

9876673

输出例子:

37689

2、程序

方案一

基本思路:初值设为0,然后读到和0相等的输出,然后基准值加1,即下一步与1比较相等输出,这样就避免了重复。

#include#includeusing namespace std;int main(){    int a[10]={0};    string str;    getline(cin,str);    int num = str.size();    int i;    for(i=num-1;i>=0;i--){        if(a[str[i]-'0']==0){            cout<

方案二

基本思路:借助容器进行操作。

//set用来记录已经被我们记录了的不重复的数字//queue保证从后往前以此输出#include #include #include using namespace std;int main(){    int n;    cin>>n;    set temp;    queue res;    while(n){        if(temp.find(n)==temp.end()){            res.push(n);            temp.insert(n);        }        n/=10;    }    while(!res.empty()){        cout<

方案三

基本思路:以上方案均适用于数字,不具有普遍性。直接以字符串形式输入,这样既适用于字符串,也适用于数字。利用容器进行操作,这里位置和数值对应关系,我们可以采用map容器。

#include #include #include #include #include using namespace std;int main(){        string str;                while(cin>>str)        //等待输入结束    //当然,这一步可以采用getline()和for()循环替代,即getline(cin,str)获取输入,然后for(int i=0;i map_input;                //直接将数字作为字符串输入,这样的方案较好                for(int i=str.size()-1;i>=0;i--){                //for(int i=str.length()-1;i>=0;i--)                //起始位置为str.size()-1而不是str.size(),终点是0而不是1,下标为size()的数值越界了(下标从0开始的)                        if(map_input.find(str[i])!=map_input.end()){                        //用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器                        //把最后一个作为基准值进行比较,即key选取has.end()这一元素                                map_input[str[i]]++;                                //如果查找到与参考值相等的,则将该key对应的value加1                        }                        else{                                map_input[str[i]]=1;                                //没有与参考值相等的key,value均为1,我们值输出value值为1的key                                cout<

注意:

(1)获取输入以及循环的基本操作:

方法一:

while(cin >> str){    //处理函数}

方法二:

getline(cin,str);//获得输入并将输入的数值绑定到str变量for(int i=0;i

(2)这里涉及到一个很重要的操作,即选择字符串中的某一些数据输出,这里不是所谓的删除操作,那样问题就复杂化了,我们可以转化为有条件的输出,例如:

            if(map_input.find(str[i]) != map_input.end())            //把最后一个作为基准值进行比较,即key选取has.end()这一元素                map_input[str[i]]++;            else            {                map_input[str[i]] = 1;                cout<< str[i];            }

这里要求输出不重复的字符,则我们应该采取这样的思路:如果不是重复的字符则输出,重复的直接跳过。

"Java如何提取不重复的整数"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0