数据结构——算法之(024)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
2014-06-04 15:47
423 查看
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】
题目:
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
题目分析:
一、类似的题目很多,其实都是快慢指针的操作
(1)两个指针同时指向字符串头
(2)快慢指针同时循环,直到指向第一个数字为止
(3)快指针接着循环到下一个非数字的位置
(4)记录下当前数字串长度,和首位指针位置
算法实现:
题目:
写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
功能:
在字符串中找出连续最长的数字串,并把这个串的长度返回,
并把这个最长数字串付给其中一个函数参数outputstr所指内存。
例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,
outputstr所指的值为123456789
题目分析:
一、类似的题目很多,其实都是快慢指针的操作
(1)两个指针同时指向字符串头
(2)快慢指针同时循环,直到指向第一个数字为止
(3)快指针接着循环到下一个非数字的位置
(4)记录下当前数字串长度,和首位指针位置
算法实现:
#include <stdio.h> #include <string.h> int count_max_digit_str(char *output_str,char *input_str) { char *fast = input_str; char *slow = input_str; int len = strlen(input_str); int i = 0, max_digit_len = 0, tmp = 0; for(; i<len; ++i) { if(input_str[i] < '0' || input_str[i] > '9') { fast++; slow++; continue; } fast++; if( *fast < '0' || *fast > '9') { tmp = fast - slow; if(tmp > max_digit_len) { max_digit_len = tmp; memcpy(output_str, slow, tmp); } tmp = 0; slow = fast; } } output_str[max_digit_len] = '\0'; return max_digit_len; } int main(int argc, char *argv[]) { char re[128] = ""; int max = count_max_digit_str(re, argv[1]); printf("%s--%d-->%s\n", argv[1], max, re); }
相关文章推荐
- 每天学习一算法系列(22)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 在字符串中找出连续最长的数字串,并把这个串的长度返回.
- 【练习】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,
- 每天学习一点编程(4)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- 字符串中找出连续最长的数字子串,并返回这个数字串的长度
- 第25题: 写一个函数,它的原形是int continumax(char *outputstr,char *intputstr),在字符串中找出连续最长的数字串,并把这个串的长度返回
- 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回;如果存在长度相同的连续数字串,返回最后一个连续数字串
- 华为练习题 在字符串中找出连续最长的数字串,并把这个串的长度返回
- C/C++ | 21-9 字符串中找出连续最长的数字串,并把这个串的长度返回
- 【微软100题】写一个函数,它的原形是int continumax(char *outputstr,char *intputstr) 功能: 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 【编程题目】在字符串中找出连续最长的数字串,并把这个串的长度返回
- 微软面试之25 在字符串中找出连续最长的数字串,并把这个串的长度返回,
- 写正确函数需要注意的地方:在字符串中找出连续最长的数字串,并把这个串的长度返回
- 在字符串中找出连续最长的数字串并以参数形式返回,并把这个串的长度返回
- 25 字符串中找出连续最长的数字串,返回长度
- 在字符串中找出连续最常的字符串,并把这个串的长度返回。
- 找出一个字符串中最长的连续数字子串,输出该字符串及长度
- 在字符串中找出连续最长的数字串