牛客练习赛13 A-幸运数字I

本文介绍了一道关于寻找字符串中出现次数最多的幸运数字子串的编程题。幸运数字定义为仅由4和7组成的数字。文章提供了一个简洁的C++实现方案,通过统计字符'4'和'7'出现的次数来找出最频繁的幸运数字子串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接: https://www.nowcoder.com/acm/contest/70/A
来源:牛客网

题目描述

定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。
比如说,47、744、4都是幸运数字而5、17、467都不是。
现在,给定一个字符串s,请求出一个字符串,使得:
1、它所代表的整数是一个幸运数字;
2、它非空;
3、它作为s的子串(不是子序列)出现了最多的次数(不能为0次)。
请求出这个串(如果有多解,请输出字典序最小的那一个)。

输入描述:

串s(1 <= |s| <= 50)。s只包含数字字符,可以有前导零。

输出描述:

一个串表示答案。
无解输出-1。

题解:
若47出现的次数最多,则4出现的次数与47一定一样多,要求输出字典序最小,
因此输出4即可。因此只需比较4,7出现的次数即可

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char t[102];
    scanf("%s",&t);
    int L=strlen(t);
    int a=0,b=0;
    for(int i=0;i<L;i++)
    {
        if(t[i]=='4')a++;
        if(t[i]=='7')b++;
    }
    if(a==0&&b==0)printf("-1\n");
    else if(a>=b)printf("4\n");
    else printf("7\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值