B. Lucky Substring

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal representation contains only the lucky digits 4 and 7. For example, numbers 477444 are lucky and 517467 are not.

One day Petya was delivered a string s, containing only digits. He needs to find a string that

  • represents a lucky number without leading zeroes,

  • is not empty,

  • is contained in s as a substring the maximum number of times.

    Among all the strings for which the three conditions given above are fulfilled, Petya only needs the lexicographically minimum one. Find this string for Petya.

  • Input

    The single line contains a non-empty string s whose length can range from 1 to 50, inclusive. The string only contains digits. The string can contain leading zeroes.

    Output

    In the only line print the answer to Petya's problem. If the sought string does not exist, print "-1" (without quotes).

    Sample test(s)
    input
    047
    
    output
    4
    
    input
    16
    
    output
    -1
    
    input
    472747
    
    output
    7
    
    Note

    The lexicographical comparison of strings is performed by the < operator in the modern programming languages. String x is lexicographically less than string y either if x is a prefix of y, or exists such i (1 ≤ i ≤ min(|x|, |y|)), that xi < yi and for any j(1 ≤ j < ixj = yj. Here |a| denotes the length of string a.

    In the first sample three conditions are fulfilled for strings "4", "7" and "47". The lexicographically minimum one is "4".

    In the second sample s has no substrings which are lucky numbers.

    In the third sample the three conditions are only fulfilled for string "7".



    解题说明:此题的意思是求一个包含幸运数字4 或7的子串,让这个子串在原串中出现次数最多。简单的想法就是统计4和7的个数,输出个数较多的那个,同时因为要求的是词典数目最小,在4和7出现数目相同的情况下,输出4。当然,此题也可以出成在出现数目相等时输出长度最长的那个子串,比如474747,这时输出的就不是4,而是47了,暂时还没想好用什么方法来做比较好,以后说不定会遇到。


    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <cstring>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    
    int main()
    {   
    	char a[51];
    	int i,count1,count2;
    	scanf("%s",&a);
    	count1=count2=0;
    	for(i=0;a[i]!='\0';i++)
    	{
    		if(a[i]=='4')
    		{
    			count1++;
    		}
    		if(a[i]=='7')
    		{
    			count2++;
    		}
    	}
    	if(count1==0&&count2==0)
    	{
    		printf("-1\n");
    	}
    	else if(count1>=count2)
    	{
    		printf("4\n");
    	}
    	else if(count1<count2)
    	{
    		printf("7\n");
    	}
    	return 0;
    }


    你可能感兴趣的:(B. Lucky Substring)