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

Đếm số chuỗi con có giá trị số lớn hơn X trong C ++


Chúng ta được cung cấp một chuỗi các số từ 0 đến 9. Chuỗi biểu diễn một số thập phân. Mục tiêu là tìm tất cả các chuỗi con đại diện cho một số thập phân lớn hơn số X. Điều kiện là chuỗi con không được bắt đầu bằng 0. Tức là trong “2021”, “02”, “021”. “0” sẽ không được bao gồm.

Chúng ta sẽ thực hiện việc này bằng cách kiểm tra giá trị đầu tiên của tất cả các chuỗi con, nếu nó lớn hơn 0 thì hãy bắt đầu tạo chuỗi con từ chỉ mục đó bằng cách chuyển chúng thành số nguyên bằng cách sử dụng stoi (). Nếu chuỗi con> số gia tăng X.

Hãy cho chúng tôi hiểu với các ví dụ.

Đầu vào - str =”123” X =12

Đầu ra - Đếm số chuỗi con có giá trị số lớn hơn X là - 2

Giải thích Các chuỗi con> 12 là 123 và 23.

Đầu vào - str =”111” X =100

Đầu ra - Số chuỗi con có giá trị thập phân chẵn trong một chuỗi nhị phân là - 1

Giải thích Chỉ 111 lớn hơn 100.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy một chuỗi str chỉ là một chuỗi số.

  • Lưu trữ độ dài của str trong len =str.length ()

  • Hàm great_X (string str, int x) nhận chuỗi và độ dài của nó và trả về số lượng các chuỗi con tạo thành một số thập phân lớn hơn X.

  • Chuyển chuỗi bằng vòng lặp FOR

  • Bắt đầu từ chỉ mục i =0 đến i

  • Nếu bất kỳ str [i]! =’0’ có nghĩa là tất cả các chuỗi con bắt đầu từ nó sẽ hợp lệ.

  • Bắt đầu từ chỉ mục j =1 đến i + j

  • Chuyển đổi chuỗi con str.substr (i, j) thành số thập phân bằng cách sử dụng stoi (). Nếu nó nhiều hơn X. Số lượng tăng lên.

  • Kết quả là số lượt trả lại.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int greater_X(string str, int x){
   int count = 0;
   int len = str.length();
   for (int i = 0; i < len; ++i){
      if(str[i] != '0'){
         for (int j=1; (i + j) <= len; ++j){
            if (stoi(str.substr(i, j)) > x){
               count++;
            }
         }
      }
   }
   return count;
}
int main(){
   string str = "987";
   int x = 100;
   cout<<"Count of number of substrings with numeric value greater than X are: "<<greater_X(str, x);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of number of substrings with numeric value greater than X are: 1