poj1002会超时

#include<iostream>
#include<string>
#include<vector>
#include<sstream>
#include<algorithm>


using namespace std;


string formal(string s){
    string ans = "";
    for(int i=0;i<s.length();i++){
        if(s.at(i) == '0' || s.at(i) == '1'){
            ans += s.at(i);
        }    
        if(s.at(i) == 'A' || s.at(i) == 'B' || s.at(i) == 'C' || s.at(i) == '2'  ){
            ans += '2';
        }
        if(s.at(i) == 'D' || s.at(i) == 'E' || s.at(i) == 'F' || s.at(i) == '3'  ){
            ans += '3';
        }  
        if(s.at(i) == 'G' || s.at(i) == 'H' || s.at(i) == 'I' || s.at(i) == '4'  ){
            ans += '4';
        }  
        if(s.at(i) == 'J' || s.at(i) == 'K' || s.at(i) == 'L' || s.at(i) == '5'  ){
            ans += '5';
        }  
        if(s.at(i) == 'M' || s.at(i) == 'N' || s.at(i) == 'O' || s.at(i) == '6'  ){
            ans += '6';
        }  
        if(s.at(i) == 'P' || s.at(i) == 'R' || s.at(i) == 'S' || s.at(i) == '7'  ){
            ans += '7';
        }  
        if(s.at(i) == 'T' || s.at(i) == 'U' || s.at(i) == 'V' || s.at(i) == '8' ){
            ans += '8';
        }  
        if(s.at(i) == 'W' || s.at(i) == 'X' || s.at(i) == 'Y' || s.at(i) == '9'  ){
            ans += '9';
        }      
    }  
    ans.insert(3,"-");
    return ans;  
}   




bool compare(string s1,string s2){
    for(int i=0;i<s1.length();i++){
        if(s1.at(i) < s2.at(i)){
            return true;
        } else if(s1.at(i) == s2.at(i)){
        }else{
            return false;
        } 
    } 
    return true;
}    


int main(void){
    
    int test;
    cin>>test;
    vector<string> v;
    vector<int> vi;
    for(int t=0;t<test;t++){
        string x;
        cin>>x;
        string y = formal(x);
        int contain = -1;
        for(int i=0;i<v.size();i++){
            if(v[i] == y)
               contain = i;
        } 
        //还不存在 
        if(contain == -1){
            v.push_back(y);
            vi.push_back(1);
        } 
        //已经存在 
        else{
            vi[contain] = vi[contain] + 1;
        }          
    } 
    /**for(int i=0;i<v.size();i++){
        cout<<v[i]<<" " <<vi[i]<<endl;
    }**/
    vector<string> temp;
    for(int i=0;i<v.size();i++){
        stringstream ss;
        ss<<vi[i];
        v[i] = v[i] + " " + ss.str();
        if(vi[i] > 1)
          temp.push_back(v[i]); 
    }  
    sort(temp.begin(),temp.end(),compare);
    for(int i=0;i<temp.size();i++){
           cout<<temp[i]<<endl;
    }  
    if(temp.size() == 0){
        cout<<"No duplicates."<<endl;
    }    
    system("pause");  
    return 0;
}     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值