【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现

简介: 一、需求描述输入一个字符串,编写程序找出这个字符串中的最长连续字符,并求出其连续出现的次数。例如,“123444445”中的最长连续字符是4,其连续出现的次数为5;“abcddef”中的最长连续字符是d,其连续出现的次数为2;“ab”中的最长连续字符是a,其连续出现的次数为1。

一、需求描述

输入一个字符串,编写程序找出这个字符串中的最长连续字符,并求出其连续出现的次数。

例如,“123444445”中的最长连续字符是4,其连续出现的次数为5;“abcddef”中的最长连续字符是d,其连续出现的次数为2;“ab”中的最长连续字符是a,其连续出现的次数为1。

 

二、算法设计

我们可以采取逐个比较字符串中各个字符的办法来获取最长连续字符及其连续出现的次数。程序的总体流程如图1所示。

图1 程序的总体流程

 

三、特殊流程考虑

在编写程序的过程中,我们要对输入的字符串的长度及格式多做考虑,如:

1.如果输入的字符串中含有空格,那么我们只处理空格之前的字符串。

2.输入的字符串中可以包含数字、字母及一些特殊的字符,但不能包含中文字符。

 

四、程序代码

 

/**********************************************************************
* 版权所有 (C)2016, Zhou Zhaoxiong。
*
* 文件名称: LongestContinChars.c
* 文件标识: 无
* 内容摘要: 寻找一个字符串中最长连续字符及其个数
* 其它说明: 例如, "aabbbc"的最长连续字符为b, 个数为3
* 当前版本: V1.0
* 作    者: Zhou Zhaoxiong
* 完成日期: 20160316
*
**********************************************************************/
#include 

// 重新定义数据类型
typedef signed   char  INT8;
typedef          int   INT32;
typedef unsigned int   UINT32;

// 函数声明
void GetLongestContinChars(INT8 *pszInputStr);


/**********************************************************************
* 功能描述: 主函数
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 0-执行成功   其它-执行失败
* 其它说明: 无
* 修改日期        版本号     修改人            修改内容
* ---------------------------------------------------------------------
* 20160316        V1.0     Zhou Zhaoxiong        创建
***********************************************************************/
INT32 main()
{
    INT8   szInputStr[100] = {0};
    UINT32 iPosFlag        = 0;
    
    printf("Please input the string: \n");
    scanf("%s", szInputStr);
    printf("InputStr=%s\n", szInputStr);

    // 先判断是否有中文字符
    for (iPosFlag = 0; iPosFlag  iMaxLen)   // 获取连续出现次数最多的字符及其出现次数
        {
            iMaxLen            = iCharCount;
            cLongestContinChar = pszInputStr[iPosFlag];
        }
    }
 
    printf("连续出现次数最多的字符是: %c\n连续出现的次数是: %d\n", cLongestContinChar, iMaxLen);
}

 

五、程序测试

我们将编写好的程序“LongestContinChars.c”上传到Linux机器,并使用“gcc -g -oLongestContinChars LongestContinChars.c”命令对该程序进行编译,生成“LongestContinChars”文件。下面对程序进行详细的测试。

1.输入字符串为“ababbba”时,程序运行情况如下:

Please input the string:

ababbba

InputStr=ababbba

连续出现次数最多的字符是: b

连续出现的次数是: 3

 

2.输入字符串为“123321”时,程序运行情况如下:

Please input the string:

123321

InputStr=123321

连续出现次数最多的字符是: 3

连续出现的次数是: 2

 

3.输入字符串为“!@##$%”时,程序运行情况如下:

Please input the string:

!@##$%

InputStr=!@##$%

连续出现次数最多的字符是: #

连续出现的次数是: 2

 

4.输入字符串为“abcdef”时,程序运行情况如下:

Please input the string:

abcdef

InputStr=abcdef

连续出现次数最多的字符是: a

连续出现的次数是: 1 


5.输入字符串为“我们123”时,程序运行情况如下:

Please input the string:

我们123

InputStr=我们123

我们123 has Chinese character, please check!


六、需求扩展

基于本文中的需求和程序,我们可考虑对需求进行以下扩展:

1.不区分字母的大小写,即如果输入的字符串为“AAAaaa”,那么程序输出最长连续字符为A或a,出现次数为6。

2.不限制字符串中不能出现中文字符,即如果输入的字符串为“窝窝头123”,那么程序输出最长连续字符为窝,出现次数为2。

 

目录
相关文章
|
29天前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
213 1
|
29天前
|
算法 调度
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理(二)
【软件设计师备考 专题 】算法探索:排序、查找、数值计算和字符串处理
32 0
|
1月前
|
算法 安全 C语言
使用C语言实现DES算法代码
使用C语言实现DES算法代码
|
2月前
|
人工智能 算法 数据可视化
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-2
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-2
199 0
|
2月前
|
机器学习/深度学习 存储 监控
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
175 1
|
2月前
|
机器学习/深度学习 算法 测试技术
低照度增强算法(图像增强+目标检测+代码)
低照度增强算法(图像增强+目标检测+代码)
87 1
|
20天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 算法 Python
傅里叶变换算法和Python代码实现
傅立叶变换是物理学家、数学家、工程师和计算机科学家常用的最有用的工具之一。本篇文章我们将使用Python来实现一个连续函数的傅立叶变换。
30 8
|
2月前
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
121 1
|
2月前
|
存储 人工智能 算法
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-1
路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)-1
69 0

热门文章

最新文章