Java如何提取不重复的整数

61次阅读
没有评论

共计 2090 个字符,预计需要花费 6 分钟才能阅读完成。

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

1、题目描述

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

输入描述:

输入一个 int 型整数

输出描述:

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

输入例子:

9876673

输出例子:

37689

2、程序方案一

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

#include iostream 
#include string 
using namespace std;
int main(){ int a[10]={0};
 string str;
 getline(cin,str);
 int num = str.size();
 int i;
 for(i=num-1;i i--){ if(a[str[i]- 0 ]==0){ cout str[i];
 a[str[i]- 0 ]++;
 }
 }
 return 0;
}

方案二

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

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

方案三

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

#include  iostream 
#include  string 
#include  map 
#include  stdio.h 
#include  algorithm 
using namespace std;
int main(){
 string str;
 while(cin str)
 // 等待输入结束
 // 当然,这一步可以采用 getline() 和 for() 循环替代,即 getline(cin,str) 获取输入,然后 for(int i=0;i str.length();i++) 控制循环输入
 map char,int  map_input;
 // 直接将数字作为字符串输入, 这样的方案较好
 for(int i=str.size()-1;i i--){//for(int i=str.length()-1;i 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 str[i]; 
 cout endl;
}

注意:

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

方法一:

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

方法二:

getline(cin,str);
// 获得输入并将输入的数值绑定到 str 变量
for(int i=0;i str.length();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 如何提取不重复的整数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2090字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)