zoukankan      html  css  js  c++  java
  • 字符串中找出最长的数字串 【微软面试100题 第二十五题】

    题目要求:

      写一个函数,它的原型是int ContinueMax(char *outputStr,char *inputStr);

      功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串赋给其中一个函数参数outputStr所指内存。

      例如:"abcd12345ed125ss123456789"的首地址传给inputStr后,函数将返回9,outputStr所指的值为123456789.

      参考链接:http://blog.csdn.net/v_july_v/article/details/6870251

    题目分析:

      用max记录最长的数字串,pStart记录该数字串的第一个字符地址;从inputStr的第一个字符开始到结束不断更新max和pStart.

    代码实现:

    #include <iostream>
    
    using namespace std;
    
    int ContinueMax(char *outputStr, char *inputStr);
    
    int main(void)
    {
        char *inputStr = "abcd12345ed125ss123456789";
        char outputStr[100] ={0};
    
        int len = ContinueMax(outputStr,inputStr);
        cout << "最长数字串为:" << outputStr << "  长度为:" << len << endl;
        return 0;
    }
    int ContinueMax(char *outputStr, char *inputStr) 
    {
        int len = 0;
        char * pStart = NULL;
        int max = 0;
    
        if(inputStr==NULL || outputStr==NULL)
            return 0;
        while(1) 
        {
            if(*inputStr >= '0' && *inputStr <='9') 
            {
                len ++;
            } 
            else 
            {
                if(len > max) 
                {
                    pStart = inputStr-len;
                    max = len;
                }
                len = 0;
            }
            if(*inputStr++=='') 
                break;
        }
        for(int i=0; i<max; i++)
            *outputStr++ = *pStart++;
        *outputStr = '';
        return max;
    }
    View Code
  • 相关阅读:
    nginx rewrite 伪静态重写学习笔记
    正则表达式相关知识
    rpm的含义
    find命令的使用
    chmod的运用方式
    [GO]数组的比较和赋值
    [GO]二维数组的介绍
    [GO]变量内存和变量地址
    [GO]给导入包起别名
    阿里云负载均衡SLB 七层https协议 nginx 获取真实IP
  • 原文地址:https://www.cnblogs.com/tractorman/p/4059416.html
Copyright © 2011-2022 走看看