本文主要是介绍Polycarp's phone book,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于001,1处理会出问题的情况,再所有的数字前面再加一个1,就变成1001和11,区分开来了,
itoa函数codefoeces上c++14才有
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<map>
#include<string>
#include<stdlib.h>
using namespace std;
char str[70000+10][10];
char s[10];
map<int,int> m;
int n;
void solve(char p[],int num){for(int i=0;i<9;i++){int v=1;for(int j=i;j<9;j++){v=v*10+p[j]-'0';if(m[v]==0) m[v]=num;else if(m[v]!=num) m[v]=-1;}}
}
void get_ans(char p[]){int ans=0x7fffffff;for(int i=0;i<9;i++){int v=1;for(int j=i;j<9;j++){v=v*10+p[j]-'0';if(m[v]!=0 && m[v]!=-1){ans=min(ans,v);}}}itoa(ans,s,10);printf("%s\n",s+1);
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%s",str[i]);}m.clear();for(int i=1;i<=n;i++){solve(str[i],i);}for(int i=1;i<=n;i++){get_ans(str[i]);}
}
这篇关于Polycarp's phone book的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!