字符串中找出连续最长的数字字符串的实例代码

代码如下:

//1. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
//功能:
//在字符串中找出连续最长的数字串,并把这个串的长度返回,
//并把这个最长数字串付给其中一个函数参数outputstr所指内存。
//例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789
#include<stdio.h>
#include<assert.h>
int continumax(char *outputstr,char *inputstr)
{   
    assert(outputstr);
    assert(inputstr);
    int length = 0;
    int maxlength = 0; 
    int i = 0;
    int j = 0;
    while(inputstr[i] != '\0')
    {
        while( inputstr[i] >='0'&& inputstr[i] <= '9')
        {   
            length++;
            i++;
        }
        if(length > maxlength)
        {
            maxlength = length;
            int k = i-maxlength;
            for(j = 0; j < maxlength; j++ )
            {

outputstr[j] =inputstr[k++];

}
            length = 0;
            continue;
        }
        i++;
        length = 0;
    }
        outputstr[j] = '\0';
        return maxlength;
}

int main( )
{   
    char inputstr[ ]= "abcd12345eddafsd125ss123456789";
    char outputstr[100];

int max_numstr_length = continumax(outputstr,inputstr);
    printf("%s\n",outputstr);
    printf("the max_numstr_length is %d\n", max_numstr_length);
    return 0;
}

代码如下:

#include<iostream.h>
#include<malloc.h>

int continumax(char * outputstr, char * inputstr)
{
    int len = 0;        //统计数字字符串的长度
    int max = 0;        //当前最大数字字符串的长度
    char *pstr =NULL;   //记录最大数字字符的起始位置

while(* inputstr!= '\0')
    {
        if(*inputstr <= '9' && *inputstr >='0')  //统计数字子字符串的长度
        {
            len++;
            inputstr++;
            continue;
        }
        else if (len > max)        //如果统计出来的数字字符串大于当前的最大数字子字符串的长度,则更新
        {
            max = len;
            pstr = inputstr-len;      
            len = 0;
        }
        inputstr++;
    }
    for(int i = 0 ; i<max;i++)  //将最大子字符串的值拷贝给outputstr
    {
        *outputstr = *pstr;
        outputstr++;
        pstr++;
    }

outputstr = outputstr-max;
       outputstr[max] ='\0';
       cout<<outputstr<<endl;

return max;

}

int main()
{
    char input[] = "de1234de123456ed";
    //char * out = (char *)malloc(100*sizeof(char));
    char output[100];
    int max = continumax(output, input);
    cout<<max<<endl;
    return 0;
}

(0)

相关推荐

  • C#算法函数:获取一个字符串中的最大长度的数字

    /// <summary> /// 获取字符串最长的数字 /// </summary> /// <param name="inputStr">输入字符串</param> /// <returns>最长数字</returns> public string GetMaxLenNumber(string inputStr) { //将字符串中的字符存放到数组中,便于处理 char[] strCharArray = inp

  • 字符串中找出连续最长的数字字符串的实例代码

    复制代码 代码如下: //1. 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) //功能: //在字符串中找出连续最长的数字串,并把这个串的长度返回, //并把这个最长数字串付给其中一个函数参数outputstr所指内存. //例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789 #include<stdio.

  • Java实现从字符串中找出数字字符串的方法小结

    本文实例总结了Java实现从字符串中找出数字字符串的方法.分享给大家供大家参考,具体如下: int start = 0; String numStr = null; for (int j = 0; j < valuesStr.length() - 1; j++) { if (Character.isDigit(valuesStr.charAt(j)) == false && Character.isDigit(valuesStr.charAt(j + 1)) == true) { s

  • python实现从字符串中找出字符1的位置以及个数的方法

    本文实例主要实现给出任意字符串,获取字符串中某字符的位置以及出现的总次数. 实现该功能代码的时候可以使用函数enumerate来将字符串分离成位置和字符,然后进行比较即可. 具体实现代码如下: #!/bin/env python #-*- coding:utf-8 -*- # """ 用enumerate将string中的1都找出来, 用enumerate实现: """ def get_1_pos(string): onePos=[] try:

  • python3实现在二叉树中找出和为某一值的所有路径(推荐)

    请写一个程序创建一棵二叉树,并按照一定规则,输出二叉树根节点到叶子节点的路径. 规则如下: 1.从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条路径上的所有节点. 2.从根节点遍历树时,请请按照左到右遍历,即优先访问左子树的节点. 二叉树创建规则:从上到下一层一层的,按照从左到右的顺序进行构造 输入"10,5,12,4,7"值,构造的树如下: 1) 10 2) 10       /     5 3) 10        /\   

  • python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配

    已知一个元素,在一个list中找出相似的元素 使用场景: 已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串 使用场景太绕了, 直接举例来说吧 随便举例: 按青岛城市的城区来说, 我数据库中存储的城区是个list:['市北区', '市南区', '莱州市', '四方区']等 从其它的数据来源得到一个城区是:市北 我怎么得到与市北相似相近的市北区 解决方案: In [1]: import difflib In [2]: cityar

  • 详解PHP如何在两个大文件中找出相同记录

    目录 1.引言 2.思路 3.实操 4.生成测试文件 5.分割文件 6.查找重复记录 7.完整代码 1.引言 给定a,b两个文件, 分别有x,y行数据, 其中(x, y均大于10亿), 机器内存限制100M,该如何找出其中相同的记录? 2.思路 处理该问题的困难主要是无法将这海量数据一次性读进内存中. 一次性读不进内存中,那么是否可以考虑多次呢?如果可以,那么多次读入要怎么计算相同的值呢? 我们可以用分治思想, 大而化小.相同字符串的值hash过后是相等的, 那么我们可以考虑使用hash取模,

  • python实现从一组颜色中找出与给定颜色最接近颜色的方法

    本文实例讲述了python实现从一组颜色中找出与给定颜色最接近颜色的方法.分享给大家供大家参考.具体分析如下: 这段代码非常有用,可以找到指定颜色相似的颜色,比如有一组8个颜色,现在给定一个rgb格式的演示,找出它与8个颜色中的哪一个最接近,如果你需要做一个按照图片颜色搜索图片的程序,这个就非常有用了. 复制代码 代码如下: from colorsys import rgb_to_hsv colors = dict(( ((196, 2, 51), "RED"), ((255, 165

  • 如何在二叉树中找出和为某一值的所有路径

    代码如下所示,不足之处,还望指正! 复制代码 代码如下: // BinaryTree.cpp : 定义控制台应用程序的入口点.//C++实现链式二叉树,在二叉树中找出和为某一值的所有路径#include "stdafx.h"#include<iostream>#include<string>#include <stack>using namespace std;static int sum(0);static int count(0);templat

  • 在Framework 4.0中:找出新增的方法与新增的类(二)

    问题描述:在Framework 4.0中:找出新增的方法与新增的类(一) 为什么动态加载程序集无法找出Framework 4.0 和Framwork2.0 新增的方法和类? 因为控制台程序默认就添加了Framework4.0的程序集,当你使用Object,Type,string这些类的时候就已经在使用已经加载的程序集了,而clr不会重复的去加载程序集??,这点记不清了.所以V2Assembly 和v4Assembly都是Framework4.0的Assembly. 验证: 复制代码 代码如下:

  • python中找出numpy array数组的最值及其索引方法

    在list列表中,max(list)可以得到list的最大值,list.index(max(list))可以得到最大值对应的索引 但在numpy中的array没有index方法,取而代之的是where,其又是list没有的 首先我们可以得到array在全局和每行每列的最大值(最小值同理) >>> a = np.arange(9).reshape((3,3)) >>> a array([[0, 1, 2], [9, 4, 5], [6, 7, 8]]) >>&

随机推荐