1486 - Chuỗi lớn nhất

Tạo bởi: GV. Bùi Phú Khuyên

Mô tả yêu cầu

Chuỗi (strings) là một phần quan trọng trong lập trình và xử lý dữ liệu áp dụng trong nhiều lĩnh vực khác nhau.

Cho một chuỗi là tập hợp mảng 1 chiều các ký tự gồm N phần tử. Mỗi ký tự có thể là a, b hoặc ?. Bạn có quyền thay thế tất cả các ký tự ? trong chuỗi ban đầu thành a hoặc b. Sau khi thay thế hết các ký tự ?, chúng ta định nghĩa giá trị của từng cặp hai ký tự liền kề như sau:

  • aa = 0
  • ab = 1
  • bb = 0
  • ba = -1

Tổng giá trị của một chuỗi, là tổng giá trị của tất cả n - 1 cặp hai ký tự liền kề.

Bài toán đặt ra cho bạn là trong tất cả các cách thay thế những ký tự ? trong chuỗi ban đầu, bạn hãy in ra tổng giá trị lớn nhất có thể.

Dữ liệu vào

  • Dòng đầu tiên chứa một số nguyên N (1 ≤ N ≤ 10^6).
  • Dòng tiếp theo chứa một chuỗi gồm N ký tự, mỗi ký tự có thể là ký tự a, b hoặc ?.

Dữ liệu ra

In ra một số nguyên duy nhất là tổng giá trị lớn nhất có thể trong tất cả các cách thay thế.

Ví dụ

Dữ liệu vào Sao chép
5
aabbb
Dữ liệu ra Sao chép
1
Dữ liệu vào Sao chép
6
a?a?bb
Dữ liệu ra Sao chép
1
Dữ liệu vào Sao chép
5
b????
Dữ liệu ra Sao chép
0

Gợi ý/Hướng dẫn

  • Ở test ví dụ 1, ta có từng cặp chuỗi liên tiếp là aa, ab, bb, bb, tổng giá trị của chuỗi là 0 + 1 + 0 + 0 = 1
  • Ở test ví dụ 2, ta có thể thay thế các kí tự ? thành chuỗi ababbb. Những cặp chuỗi liên tiếp là ab, ba, ab, bb, bb, tổng giá trị của chuỗi là 1 + (-1) + 1 + 0 + 0 = 1.
  • Ở test ví dụ 3, ta có thể thay thế thành chuỗi bbbbb, tổng giá trị của chuỗi là 0.
Đăng nhập để làm bài
Thông tin
Giới hạn thời gian 1 giây
Giới hạn bộ nhớ 128 MB