Bài 18.1. Tìm Kho Báu Qua Chuỗi Bí Ẩn - Độ khó: Dễ


LÀM BÀI

Points: 10 (partial)
Time limit: 2.0s
Memory limit: 64M

Author:
Problem type

Bài 18.1. Tìm Kho Báu Qua Chuỗi Bí Ẩn - Độ khó: Dễ

Trong một cuộc phiêu lưu tìm kiếm kho báu, bạn lạc vào một ngôi đền cổ. Trên bức tường, một thông điệp bí ẩn được khắc bằng các ký tự lạ. Để giải mã thông điệp và tìm ra vị trí kho báu, bạn cần tìm "điểm bất thường" đầu tiên trong chuỗi ký tự. Điểm bất thường được định nghĩa là vị trí đầu tiên (từ 0) mà ký tự tại đó không đối xứng với ký tự ở vị trí tương ứng từ cuối chuỗi. Nếu chuỗi hoàn toàn đối xứng (là một palindrome), thì không có điểm bất thường nào và bạn cần trả về giá trị đặc biệt.

Mô tả bài tập: Viết một hàm đệ quy findFirstMismatch(const std::string& s, int left, int right) để tìm chỉ số của ký tự đầu tiên (tính từ 0) mà s[left] khác với s[right]. Nếu chuỗi s là một chuỗi đối xứng (palindrome) và không có ký tự nào khác biệt, hãy trả về -1.

INPUT FORMAT

Dòng đầu tiên chứa một chuỗi S duy nhất, độ dài của chuỗi từ 1 đến 1000 ký tự. Chuỗi chỉ chứa các ký tự chữ cái tiếng Anh in thường ('a'-'z').

OUTPUT FORMAT

In ra một số nguyên duy nhất là chỉ số của ký tự bất thường đầu tiên, hoặc -1 nếu chuỗi là palindrome.

Ví dụ:

Input:

racecar

Output:

-1

Giải thích:

  • Chuỗi "racecar" là một palindrome. r == r, a == a, c == c, e là ký tự giữa. Không có ký tự nào khác biệt, nên trả về -1.

Input:

hello

Output:

0

Giải thích:

  • s[0] ('h') khác với s[4] ('o'). Vị trí bất thường đầu tiên là 0.

Input:

abacaba

Output:

-1

Giải thích:

  • Chuỗi "abacaba" là một palindrome. Không có ký tự nào khác biệt, nên trả về -1.


Comments

There are no comments at the moment.

Zalo