文章

34

粉丝

89

获赞

2

访问

18.4k

头像
重复数字 题解:超详细c++
P1904 北京理工大学2019年机试
发布于2024年3月28日 11:04
阅读数 415

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;//不知道具体多少数以及数的大小 就尽量设置大一些
int a[N];
int flag[N];
string str;

int GetNumber(int &i){//获取字符串中的数字,会有超过两位的数字
    int num = 0;
    while(isdigit(str[i])){
        num *= 10;
        num += str[i] - '0';
        i++;
    }
    return num;
}
int main(){
    while(getline(cin,str)){
        int len = str.size();
        int cnt = 0;//字符串中数字的个数
        fill(flag,flag+N,0);
        for(int i = 0;i < len;i++){
            if(isdigit(str[i])){
                int num = GetNumber(i);
                a[cnt++] = num;//把数字加入a数组中
                flag[num]++;//num这个数字的出现次数加一
            }
        }
        int ans = -1;//答案
        for(int i = 0;i < cnt;i++){
            if(flag[a[i]] > 1){// a[i]的出现次数超过一次,也即有重复
                ans = a[i];// 将它赋值给ans
            }
        }
        cout << ans << endl;
    }
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发