您好,登錄后才能下訂單哦!
本篇內容介紹了“Java如何提取不重復的整數”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重復數字的新的整數。
輸入描述:
輸入一個int型整數
輸出描述:
按照從右向左的閱讀順序,返回一個不含重復數字的新的整數
輸入例子:
9876673
輸出例子:
37689
基本思路:初值設為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>=0;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>=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<<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如何提取不重復的整數”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。