找出最长的数字串:方法2

把字符串里的各个数字串的长度和当前最大的数字串比较,最终得到最大的数字串为哪个数字串,记下它在字符串里的位置p_

dest,和它的长度cnt

输出时,从地址p_dest往后输出cnt个字符

#include <iostream>
using namespace std;

//找到字符串中最长的数字串
char*  find_max_num_string(char *p_src, char *p_dest,int& max)
                        //原字符串、最长数字串的首地址、数字串的长度
{

    int cnt = 0;   //当前所记录的数字串的长度

    if (p_src == NULL)
        return 0; 

    while (*p_src != ‘\0‘)
    {
        if (*p_src >= ‘0‘&&*p_src <= ‘9‘)
        {
            cnt++;  //字符为数字字符时,计数器加;

            if (cnt > max) //大于之前记录的最大的数字串
            {
                p_dest = p_src - cnt + 1; // 刷新p_dest
                max = cnt;//刷新max
            }
        }
        else cnt = 0;//否则遇到的是非数字字符 ,计数器=0
        p_src++;
    }
    return p_dest;

}
int main()
{
    int cnt = 0;
    char src[50] = { ‘\0‘ };
    char *p_dest = src;
    cout << "输入字符串";
    cin.getline(src, 50);

    p_dest=find_max_num_string(src, p_dest,cnt);
    cout << cnt << endl;

    for (int i=0;i < cnt; i++)
    {
        cout << *(p_dest++);
    }
    system("pause");
}

原文地址:https://www.cnblogs.com/leiguoxin-fjnu/p/8869686.html

时间: 2024-11-13 06:45:11

找出最长的数字串:方法2的相关文章

最长(大)回文串的查找(字符串中找出最长的回文串)PHP实现

首先还是先解释一下什么是回文串:就是从左到右或者从右到左读,都是同样的字符串.比如:上海自来水来自海上,bob等等. 那么什么又是找出最长回文串呢? 例如:字符串abcdefedcfggggggfc,其中efe,defed,cdefedc,gg,ggg,gggg,ggggg,gggggg,fggggggf,cfggggggfc都是回文串,左右完全一样. 这其中,有最短的gg,最长的cfggggggfc,还有其他长度的.忽略长度为1的.毕竟一个字符的都算回文了. 那么,找出最长的,就是找出这个cf

在字符串中找出连续最长的数字串 在字符串中找出连续最长的数字串,并把这个串的长度返回

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存.例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9, #include<iostream> using namespace std; int ContinueMax(char *

[华为机试练习题]43.在字符串中找出连续最长的数字串

题目 描述: 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回:如果存在长度相同的连续数字串,返回最后一个连续数字串: 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串"1234"的长度就小于数字串"1359055",如果没有数字,则返回空字符串("")而不是NULL! 样例输入 abcd12345ed125ss123058789 abcd12345ss54761 样例输出 输出123058789,函数返回值9 输出547

字符串中找出连续最长的数字串(正则表达式)

题目描述 读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述: 个测试输入包含1个测试用例,一个字符串str,长度不超过255. 输出描述: 在一行内输出str中里连续最长的数字串. 示例1 输入 abcd12345ed125ss123456789 输出 123456789 1 /** 2 * 3 * 4 用正则表达式 替换 非数字 字符 在用 split 分割 得到 字符串数组 5 * @author Dell 6 * 7 */ 8 import java.util.Scan

[华为]在字符串中找出连续最长的数字串

链接:https://www.nowcoder.com/questionTerminal/2c81f88ecd5a4cc395b5308a99afbbec来源:牛客网 样例输出 输出123058789,函数返回值9 输出54761,函数返回值5 接口说明 函数原型: unsignedint Continumax(char** pOutputstr,  char* intputstr) 输入参数:   char* intputstr  输入字符串: 输出参数:   char** pOutputst

hdu1298 T9(手机输入法,每按一个数字,找出出现频率最高的字串,字典树+DFS)

Problem Description A while ago it was quite cumbersome to create a message for the Short Message Service (SMS) on a mobile phone. This was because you only have nine keys and the alphabet has more than nine letters, so most characters could only be

C#中的字符串处理——找出最长数字子串

百度测试部2015年10月份的面试题之——字符串处理,找出最长的子串. 代码如下: private static string SelectNumberFromString(string input) { string result = ""; foreach (Match match in Regex.Matches(input, @"\d+"))//不要在匹配字符串的开头和结尾加上"^"和"$". { result = m

LeetCode:Consecutive Numbers - 找出连续出现的数字

1.题目名称 Consecutive Numbers(找出连续出现的数字) 2.题目地址 https://leetcode.com/problems/consecutive-numbers/ 3.题目内容 写一个SQL,查出表Logs中连续出现至少3次的数字: +----+-----+ | Id | Num | +----+-----+ | 1  |  1  | | 2  |  1  | | 3  |  1  | | 4  |  2  | | 5  |  1  | | 6  |  2  | | 

微软算法100题25 查找连续最长的数字串

第25 题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr 所指内存.例如:"abcd12345ed125ss123456789"的首地址传给intputstr 后,函数将返回9,outputstr 所指的值为123456789 思路:两个指针,一个保存当前最长长度的变量max,然后移动指针,直到到字符