HDU 4167 User Names【string stl】

#include<iostream> #include<sstream> #include<algorithm> #include<set> using namespace std; int main() { cin.sync_with_stdio(false); int n,maxlen,cas=1; while(cin>>n>>maxlen) { if(n==0&&maxlen==0) break; cout<<"Case "<<cas++<<endl; string s,a,b,ss; set<string>myset; getline(cin,s); for(int i=0;i<n;i++) { getline(cin,ss); for(int j=0;j<ss.length();j++) while(ss[j]==39||ss[j]==45) ss.erase(j,1); istringstream oss(ss); oss>>a;while(oss>>b); s=a[0]+b; for(int i=0;i<s.length();i++) s[i]=tolower(s[i]); string add;int id=1; if(s.length()>maxlen) s.erase(maxlen); while(myset.find(s+add)!=myset.end()) { add.clear(); if(id>9) add+=48+id/10;add+=48+id%10; if(add.length()+s.length()>maxlen) s.erase(maxlen-add.length()); id++; } myset.insert(s+add);cout<<s+add<<endl; } } return 0; }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值