25. 求满足条件的最长子串的长度

给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求:

1、只包含1个字母(a~z, A~Z),其余必须是数字;

2、字母可以在子串中的任意位置;

如果找不到满足要求的子串,如全是字母或全是数字,则返回-1。

输入描述:

字符串(只包含字母和数字)

输出描述:

子串的长度

示例1:

输入

abC124ACb

输出

4

作者:d17c2a49b064

链接:https://www.jianshu.com/p/edc1efd18a67

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.给定一个字符串,只包含字母和数字

2.按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,

3.子串要求:(1)只包含1个字母(a~z,A~Z),其余必须是数字

(2)字母可以在子串中的任何位置

4.如果找不到满足要求的子串,如全是字母或全是数字,则返回-1.

5.输入描述:字符串(只包含字母和数字)

6.输出描述:子串的长度

二、解题思路

1.设定一个布尔类型的found为false,如果找到了变成true,没找到输出-1

2.设定一个布尔类型的isletter为false,遇到字母变成true,遇到数字,构成符合要求的字符串,(字符串长度等于数字的数量加上1),最后变成false,(如果str[i]是字母那么变成true)

3.如果遇到数字,统计数字数量,判定数字前后是否有字母,如果有,则为有效子串,判断长度和count的大小,count等于比较大的那个

4.输出结果

三、具体步骤

使用的语言是C

cpp 复制代码
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main() {
    char str[1000];
    scanf("%s", str);
    int len = strlen(str);
    bool isletter = false;
    int count = 0;
    bool found = false;
    for(int i = 0; i < len; i++) {
        if(isalpha(str[i])) isletter = true;
        if(isdigit(str[i])) {
            int temp = 0;
            while(i < len && isdigit(str[i])) {
                i++;
                temp++;
            }
            if((isletter || isalpha(str[i])) && temp > count) {
                found = true;
                count = temp + 1;
            }
            isletter = false;
            if(isalpha(str[i])) isletter = true;
        }
    }
    if(found) printf("%d\n", count);
    else printf("-1\n");
    return 0;
}
相关推荐
CoovallyAIHub5 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP5 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo6 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo6 小时前
300:最长递增子序列
算法
CoovallyAIHub11 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub11 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI1 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v1 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工1 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农1 天前
【React用到的一些算法】游标和栈
算法·react.js