> 文章列表 > 【华为OD机试真题 C++】1001 - 在字符串中找出连续最长的数字串含-号

【华为OD机试真题 C++】1001 - 在字符串中找出连续最长的数字串含-号

【华为OD机试真题 C++】1001 - 在字符串中找出连续最长的数字串含-号

文章目录

    • 一、题目
      • 🔸题目描述
      • 🔸输入输出
    • 二、代码参考
  • 作者:KJ.JK

🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
 
🍂个人博客首页: KJ.JK
 
💖系列专栏:华为OD机试真题(C++)

🍂专栏介绍: 华为OD机试真题汇总,使用C++来进行解析解答实现,帮助大家更好的AC题目,分享各种解题思路,让大家更好通过机试,持续更新中,欢迎大家订阅

一、题目


🔸题目描述

请在一个字符串中找出连续最长的数字串,并返回这个数字串。
如果存在长度相同的连续数字串,返回最后一个。
如果没有符合条件的字符串,返回空字符串””。
 
注意:
数字串可以由数字”0-9″、小数点”.”、正负号”±”组成,长度包括组成数字串的所有符号。
“.”、“±”仅能出现一次,”.”的两边必须是数字,”±”仅能出现在开头且其后必须要有数字。
长度不定,可能含有空格


🔸输入输出

输入
1234567890abcd9.+12345.678.9ed
 
输出
+12345.678


二、代码参考

#include <regex>
#include <iostream>
#include <string>
#include <algorithm>using namespace std;string GetMaxLengthDigtalString(const string &inputString) 
{regex numRegex("[+-]?[0-9]+(\\\\.[0-9]+)?");smatch result;string outputString;string::const_iterator iter = inputString.begin();while (regex_search(iter, inputString.end(), result, numRegex)) {string tmpString = result[0];if (tmpString.size() >= outputString.size()) {tmpString.swap(outputString);}iter = result[0].first;while (++iter != result[0].second && (*iter) != '.') {}}return outputString;
}int main(int argc, char **argv) 
{string input_string;while (getline(cin, input_string)) {cout << GetMaxLengthDigtalString(input_string) << endl;}return 0;
}

作者:KJ.JK

文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习