Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Sức nhảy tối đa để đến cuối chuỗi nhị phân trong C++


Cho chuỗi 0 và 1. Bắt đầu từ đầu, mỗi bước nhảy đến ký tự giống ký tự cuối chuỗi. Tìm độ nhảy lớn nhất cần thiết.

Ví dụ: "1010101" (cuối là '1') → các đoạn 0 giữa các 1 có độ dài 1 → nhảy 2.

Thuật toán

  • Ký tự đích = ký tự cuối.
  • Đếm độ dài đoạn liên tiếp không phải ký tự đích.
  • Kết quả = max(độ dài đoạn) + 1.

Ví dụ triển khai (C++)

#include <bits/stdc++.h>
using namespace std;

int powerOfJump(string s) {
    int count = 1, max_so_far = INT_MIN;
    char target = s.back();
    for (char c : s) {
        if (c == target) {
            max_so_far = max(max_so_far, count);
            count = 1;
        } else count++;
    }
    return max_so_far;
}

int main() {
    string st = "1010101";
    cout << powerOfJump(st);
    return 0;
}

Đầu ra

2