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