CSES - Repetitions | Lặp lại

Xem PDF

Điểm: 900 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn có một dãy ADN: một xâu kí tự chỉ gồm các chữ cái A, T, G, C. Hãy tìm đoạn ADN con dài nhất chỉ gồm các kí tự giống nhau.

Input

  • Một dòng duy nhất chứa xâu \(s\).

Output

  • In ra độ dài của đoạn ADN con dài nhất tìm được.

Constraints

  • \(1 \le n \le 10^6\)

Example

Sample input

ATTCGGGA

Sample output
3


Bình luận


  • 1
    vietnammuonnam_mvn    6:07 p.m. 24 Tháng 8, 2024

    def longest_uniform_substring(s):
    # Khởi tạo độ dài tối đa và độ dài hiện tại
    max_length = 1
    current_length = 1

    # Duyệt qua chuỗi từ ký tự thứ hai
    for i in range(1, len(s)):
        if s[i] == s[i - 1]:
            # Tăng độ dài hiện tại nếu ký tự hiện tại giống ký tự trước đó
            current_length += 1
        else:
            # Cập nhật độ dài tối đa nếu độ dài hiện tại lớn hơn
            if current_length > max_length:
                max_length = current_length
            # Reset độ dài hiện tại cho ký tự mới
            current_length = 1
    
    # Kiểm tra cuối cùng cho đoạn cuối cùng
    if current_length > max_length:
        max_length = current_length
    
    return max_length
    

    Ví dụ sử dụng:

    s = input().strip()
    print(longest_uniform_substring(s))
    Code nè ai cop cop đê nhớ xem giải thích:Giải thích:
    max_length theo dõi độ dài của đoạn ký tự liên tiếp giống nhau dài nhất.
    current_length theo dõi độ dài của đoạn ký tự liên tiếp hiện tại.
    Vòng lặp so sánh mỗi ký tự với ký tự trước đó để xác định xem nó tiếp tục đoạn hiện tại hay bắt đầu một đoạn mới.
    Kiểm tra cuối cùng đảm bảo rằng đoạn dài nhất tìm được ở cuối chuỗi được tính đến.
    Thuật toán này xử lý chuỗi một cách hiệu quả trong thời gian tuyến tính, phù hợp với các đầu vào lớn lên đến
    1
    0
    6
    10
    6
    ký tự.

  • 4 bình luận nữa