Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาตัวเลขที่ยาวที่สุดในสตริงในภาษา C++


ในปัญหานี้ เราได้รับสตริง str ที่ประกอบด้วยอักขระและตัวอักษรเท่านั้น งานของเราคือ ค้นหาหมายเลขที่ยาวที่สุดในสตริง

คำอธิบายปัญหา: เราต้องหาความยาวของตัวเลข เช่น อักขระตัวเลขต่อเนื่องกันในสตริง

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล: str =“code001tutorials34124point”

ผลลัพธ์: 34124

คำอธิบาย:

ตัวเลขในสตริงคือ

001 - ขนาด 3

34124 - ขนาด 5

แนวทางการแก้ปัญหา

วิธีแก้ปัญหาอย่างง่ายคือการข้ามเหล็กไนและหาความยาวของตัวเลขและดัชนีเริ่มต้น เราจะเก็บตำแหน่งเริ่มต้นและจำนวนอักขระในสตริงสำหรับแต่ละหมายเลขในสตริง และในตอนท้ายให้ส่งคืนหมายเลข

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;

string findLongestNumber(string str, int l) {
   
   int count = 0, max = 0, maxLenPos = -1, currPos, currLen, maxLen = 0;

   for (int i = 0; i < l; i++) {
      currPos = maxLenPos;
      currLen = maxLen;
      count = 0;
      maxLen = 0;
      if (isdigit(str[i]))
         maxLenPos = i;
      while (isdigit(str[i])) {
         count++;
         i++;
         maxLen++;
      }
      if (count > max) {
         max = count;
      }
      else {
         maxLenPos = currPos;
         maxLen = currLen;
      }
   }
   return (str.substr(maxLenPos, maxLen));
}

int main() {
   
   string str = "code001tutorials34124point";
   int l = str.length();
   cout<<"The longest length number in string is "<<findLongestNumber(str, l);
   return 0;
}

ผลลัพธ์

The longest length number in string is 34124