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

โปรแกรม C++ หาจำนวนซับสตริงที่เรียงตามลำดับตัวอักษร


สมมติว่าเรามีสตริงที่มีความยาว n ประกอบด้วยตัวอักษรพิมพ์ใหญ่เท่านั้น เราต้องหาจำนวนซับสตริงที่ตัวอักษรเกิดขึ้นตามลำดับตัวอักษร ขนาดขั้นต่ำของซับสตริงคือ 2 ดังนั้นถ้าสตริงเป็น "REFJHLMNBV" จำนวนซับสตริงคือ 2 คือ "EF" และ "MN"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • ตรวจสอบว่า str[i] + 1 เท่ากับ str[i+1] หรือไม่ หากใช่ ให้เพิ่มผลลัพธ์ขึ้น 1 และวนลูปสตริงต่อจนกว่าจะพบตัวอักษรถัดไปที่อยู่นอกลำดับตัวอักษร มิฉะนั้นทำต่อไป

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

int countSubstr(string main_str) {
    int res = 0;
    int n = main_str.size();
    for (int i = 0; i < n - 1; i++) {
        if (main_str[i] + 1 == main_str[i + 1]) {
            res++;
            while (main_str[i] + 1 == main_str[i + 1]) {
                i++;
            }
        }
    }
    return res;
}

int main() {
    string str = "REFJHLMNBV";
    cout << "Number of substrings: " << countSubstr(str);
}

ผลลัพธ์

Number of substrings: 2