题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
#include <iostream>
#include <string>
using namespace std;
//最长连续数字串
class LongestConseNumStr {
private:
string s;
public:
//构造函数
LongestConseNumStr(const string s);
//析构函数
~LongestConseNumStr();
//在字符串中找出连续最长的数字串
const int findLongestConseNumStr(void)const;
//判断s是否是数字串
const bool isNumStr(const string s)const;
};
LongestConseNumStr::LongestConseNumStr(const string s) {
this->s = s;
return;
}
LongestConseNumStr::~LongestConseNumStr() {
}
const int LongestConseNumStr::findLongestConseNumStr(void) const {
//从最长的可能长度开始搜寻,找到后开始打印,到尾部退出
bool flag = false;
int len = this->s.size();
for (; len > 0; len--) {
for (int i = 0; i <= this->s.size() - len; i++) {
string sub = this->s.substr(i, len);
if (this->isNumStr(sub)) {
flag = true;
cout << sub;
}
}
if (flag) {
cout << ',';
return len;
}
}
return 0;
}
const bool LongestConseNumStr::isNumStr(const string s) const {
for (char ch : s)
if ((ch < '0') || (ch > '9'))
return false;
return true;
}
int main() {
string a;
while (cin >> a) { // 注意 while 处理多个 case
cout << LongestConseNumStr(a).findLongestConseNumStr() << endl;
}
}
// 64 位输出请用 printf("%lld")
查看14道真题和解析