问题描述:
实现一个函数,求出字符串中的连续最长数字串。例如输入”12345cbf3456″,输出”12345″。
函数原型为:
void conti_num_max( const char * src, char * dest);
dest保存最长数字串,返回void。
分析:
遍历一遍字符串,记录起始位置和长度即可。
代码实现:
// 25.cc
#include <iostream>
#include <cstring>
using namespace std; void conti_num_max(const char* src, char* dest) {
if (!src) {
*dest = '\0';
return;
} size_t len = ;
size_t max_len = ;
const char* p = src;
const char* p_start = NULL;
while (*p != '\0') {
if (*p >= '' && *p <= '')
len++;
else {
if (len > max_len) {
max_len = len;
p_start = p - len;
}
len = ;
}
p++;
}
strncpy(dest, p_start, max_len);
} int main() {
string s;
cout << "input a str contain num:" << endl;
getline(cin, s); char* dest = new char[s.size() + ];
conti_num_max(s.c_str(), dest);
cout << dest << endl;
return ;
}
输出:
$ ./a.exe
input a str contain num:
123dfasdf123123asdfasdf33333333333333asdfsdf221asdf2323