輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重複數字的新的整數。
ios
輸入描述:
函數
輸入一個int型整數spa
輸出描述:
code
按照從右向左的閱讀順序,返回一個不含重複數字的新的整數orm
輸入例子:
ci
9876673
輸出例子:
字符串
37689
基本思路:初值設爲0,而後讀到和0相等的輸出,而後基準值加1,即下一步與1比較相等輸出,這樣就避免了重複。
get
#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; }
基本思路:藉助容器進行操做。
input
//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容器。
string
#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]; }
這裏要求輸出不重複的字符,則咱們應該採起這樣的思路:若是不是重複的字符則輸出,重複的直接跳過。