Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số độ dài dài nhất trong một chuỗi trong C ++

Trong bài toán này, chúng ta được cung cấp một chuỗi str chỉ bao gồm ký tự và bảng chữ cái. Nhiệm vụ của chúng ta là tìm số có độ dài dài nhất trong một chuỗi.

Mô tả sự cố: chúng ta cần tìm độ dài của số, tức là các ký tự số liên tiếp trong chuỗi.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào: str =“code001tutorials34124point”

Đầu ra: 34124

Giải thích:

Các số trong chuỗi là

001 - kích thước 3

34124 - kích thước 5

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề này là xem xét dấu vết và tìm độ dài của số cũng như chỉ số bắt đầu của nó. Chúng tôi sẽ lưu trữ vị trí bắt đầu và số lượng ký tự trong chuỗi cho mỗi số trong chuỗi. Và cuối cùng, hãy trả lại số.

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

The longest length number in string is 34124