Phone Code

Posted jmzit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Phone Code相关的知识,希望对你有一定的参考价值。

Polycarpus has n friends in Tarasov city. Polycarpus knows phone numbers of all his friends: they are strings s1,s2,...,sn. All these strings consist only of digits and have the same length.

Once Polycarpus needed to figure out Tarasov city phone code. He assumed that the phone code of the city is the longest common prefix of all phone numbers of his friends. In other words, it is the longest string c which is a prefix (the beginning) of each si for all i(1≤in). Help Polycarpus determine the length of the city phone code.

Input

The first line of the input contains an integer n (2≤n≤3·104) ? the number of Polycarpus‘s friends. The following n lines contain strings s1,s2,...,sn ? the phone numbers of Polycarpus‘s friends. It is guaranteed that all strings consist only of digits and have the same length from 1 to 20, inclusive. It is also guaranteed that all strings are different.

Output

Print the number of digits in the city phone code.

Examples
Input
4
00209
00219
00999
00909
Output
2
Input
2
1
2
Output
0
Input
3
77012345678999999999
77012345678901234567
77012345678998765432
Output
12
Note

prefix of string t is a string that is obtained by deleting zero or more digits from the end of string t. For example, string "00209" has 6 prefixes: "" (an empty prefix), "0", "00", "002", "0020", "00209".

In the first sample the city phone code is string "00".

In the second sample the city phone code is an empty string.

In the third sample the city phone code is string "770123456789".

 

简单说就是找所有号码中公共的前缀数字的数量,简单来说就是区号吧(手动滑稽)

刚开始想的时候想每个和其他的比,看看最小的公共前缀数字。

然后我就想时间复杂度O(n^2)。时间应该会超吧。所以想相邻的比吧。

 

还是太菜了。。只能做水题,数据结构的题一看就晕啊。

 

技术分享图片
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
    string a[30004];
    int minlen=1565489;
    int n;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        cin >> a[i];
    }
    int len=a[0].size();
    for(int i=0;i<n-1;i++)
    {
        int Min=0;
        for(int j=0;j<len;j++)
         {
             if(a[i][j]==a[i+1][j])
             Min++;
             else 
             break;
        } 
        //cout << Min << endl;
        minlen=min(Min, minlen);
    }
    cout << minlen;
} 
View Code

 










以上是关于Phone Code的主要内容,如果未能解决你的问题,请参考以下文章

vs code 自定义代码片段

VS Code配置markdown代码片段

VS Code配置markdown代码片段

vs code 用户代码片段 html.json

在 Windows Phone 8 中播放声音片段

VS Code中自定义Emmet代码片段