zoukankan      html  css  js  c++  java
  • C++ 工程师养成 每日一题4.5 (迭代器遍历)

    首先说明,当每日一题标号不是整数时代表此题是较为简单的,我在这里整理一遍主要是我做错了(没错是我太菜各位大佬无视就好)

    题目:

    读入一个字符串str,输出字符串str中的连续最长的数字串

    此题思路清晰下面给出我自己的解法:

    我第一次做的正确答案时使用迭代器进行遍历完成的

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 void FFind(string s){
     5     auto it = s.begin();
     6     string a,res;
     7     while (it != s.end()){
     8         if (*it >= 48 && *it <= 57){
     9             a =a + *it;
    10         }
    11         else{
    12             if (a.size() > res.size()){
    13                 res = a;
    14                 a.clear();
    15             }
    16             else{
    17                 a.clear();
    18             }
    19         }
    20         it++;
    21     }
    22     if (a.size() > res.size()){         //因为取不到end()位置会引发程序崩溃,所以使用迭代器的话在遍历最后一个位置的时候就必须在循环外在此判断一次条件,不美观且降低了程序可读性
    23         res = a;
    24     }
    25     cout << res;
    26 }
    27 int main(){
    28     string s;
    29     getline(cin, s);
    30     FFind(s);
    31     return 0;
    32 }

    在写完之后我果断去找了其他大佬写的程序,才发现我这个人老把问题想得太麻烦!!

    老是忘记string也可以使用[ ] 来取内容,这样遍历就不会造成无法判断最后一次循环(最后一个位置的下一个位置)

    大佬答案如下:

     1 #include<iostream>
     2 using namespace std;
     3 #include<string>
     4 int main()
     5 {
     6     string s, res, cur;
     7     cin >> s;
     8     for (int i = 0; i <= s.length(); i++)
     9     {
    10                                                        
    11         if (s[i] >= '0' && s[i] <= '9')                 //使用 [ ] 符来取内容 
    12         {
    13             cur += s[i];                                
    14         }
    15         else
    16         {
    17                                                            // 找出更长的字符串,则更新字符串
    18             if (res.size() < cur.size())
    19                 res = cur;
    20             else
    21                 cur.clear();
    22         }
    23     }
    24     cout << res;
    25     return 0;
    26 }

    菠菜~贱卖,菠菜!贱卖!!菠菜!!贱卖!!!菠 ‘ 菜 ’  !!!!

  • 相关阅读:
    Spire.Barcode好用的条码生在组件
    jQuery、js操作页面
    设计模式---简介
    设计模式---策略设计模式
    POI生成Excel文件:Excel,工具类,背景色,边框,居中,合并单元格
    设计模式---模板设计模式(java)
    maven打包不打lib目录里面的jar包解决办法
    MySQL库表操作
    Linux环境根据data目录文件恢复MySQL数据
    Linux 安装 mysql 与 mysql在Linux环境本地使用,但windows远程连不了问题处理
  • 原文地址:https://www.cnblogs.com/Kaniso-Vok/p/11832501.html
Copyright © 2011-2022 走看看