Java如何提取不重復(fù)的整數(shù)

本篇內(nèi)容介紹了“Java如何提取不重復(fù)的整數(shù)”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在張家川回族自治等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需開(kāi)發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)整合營(yíng)銷推廣,外貿(mào)網(wǎng)站建設(shè),張家川回族自治網(wǎng)站建設(shè)費(fèi)用合理。

1、題目描述

輸入一個(gè)int型整數(shù),按照從右向左的閱讀順序,返回一個(gè)不含重復(fù)數(shù)字的新的整數(shù)。

輸入描述:

輸入一個(gè)int型整數(shù)

輸出描述:

按照從右向左的閱讀順序,返回一個(gè)不含重復(fù)數(shù)字的新的整數(shù)

輸入例子:

9876673

輸出例子:

37689

2、程序

方案一

基本思路:初值設(shè)為0,然后讀到和0相等的輸出,然后基準(zhǔn)值加1,即下一步與1比較相等輸出,這樣就避免了重復(fù)。

#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;
}

方案二

基本思路:借助容器進(jìn)行操作。

//set用來(lái)記錄已經(jīng)被我們記錄了的不重復(fù)的數(shù)字
//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;
}

方案三

基本思路:以上方案均適用于數(shù)字,不具有普遍性。直接以字符串形式輸入,這樣既適用于字符串,也適用于數(shù)字。利用容器進(jìn)行操作,這里位置和數(shù)值對(duì)應(yīng)關(guān)系,我們可以采用map容器。

#include <iostream>
#include <string>
#include <map>
#include <stdio.h>
#include <algorithm>

using namespace std;

int main(){
	string str;
	
	while(cin>>str)
	//等待輸入結(jié)束
    //當(dāng)然,這一步可以采用getline()和for()循環(huán)替代,即getline(cin,str)獲取輸入,然后for(int i=0;i<str.length();i++)控制循環(huán)輸入
	{
		map<char,int> map_input;
		//直接將數(shù)字作為字符串輸入,這樣的方案較好
		for(int i=str.size()-1;i>=0;i--){
		//for(int i=str.length()-1;i>=0;i--)
		//起始位置為str.size()-1而不是str.size(),終點(diǎn)是0而不是1,下標(biāo)為size()的數(shù)值越界了(下標(biāo)從0開(kāi)始的)
			if(map_input.find(str[i])!=map_input.end()){
			//用find函數(shù)來(lái)定位數(shù)據(jù)出現(xiàn)位置,它返回的一個(gè)迭代器,當(dāng)數(shù)據(jù)出現(xiàn)時(shí),它返回?cái)?shù)據(jù)所在位置的迭代器,如果map中沒(méi)有要查找的數(shù)據(jù),它返回的迭代器等于end函數(shù)返回的迭代器
                        //把最后一個(gè)作為基準(zhǔn)值進(jìn)行比較,即key選取has.end()這一元素
				map_input[str[i]]++;
				//如果查找到與參考值相等的,則將該key對(duì)應(yīng)的value加1
			}
			else{
				map_input[str[i]]=1;
				//沒(méi)有與參考值相等的key,value均為1,我們值輸出value值為1的key
				cout<<str[i];	
			}
		}
		cout<<endl;
	}	
}

注意:

(1)獲取輸入以及循環(huán)的基本操作:

方法一:

while(cin >> str){
    //處理函數(shù)
}

方法二:

getline(cin,str);
//獲得輸入并將輸入的數(shù)值綁定到str變量
for(int i=0;i<str.length();i++){
    //處理函數(shù)
}

(2)這里涉及到一個(gè)很重要的操作,即選擇字符串中的某一些數(shù)據(jù)輸出,這里不是所謂的刪除操作,那樣問(wèn)題就復(fù)雜化了,我們可以轉(zhuǎn)化為有條件的輸出,例如:

            if(map_input.find(str[i]) != map_input.end())
            //把最后一個(gè)作為基準(zhǔn)值進(jìn)行比較,即key選取has.end()這一元素
                map_input[str[i]]++;
            else
            {
                map_input[str[i]] = 1;
                cout<< str[i];
            }

這里要求輸出不重復(fù)的字符,則我們應(yīng)該采取這樣的思路:如果不是重復(fù)的字符則輸出,重復(fù)的直接跳過(guò)。

“Java如何提取不重復(fù)的整數(shù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

當(dāng)前名稱:Java如何提取不重復(fù)的整數(shù)
網(wǎng)站鏈接:http://muchs.cn/article18/ipigdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、建站公司、小程序開(kāi)發(fā)、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管