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


  • -7
    nguyenquocphonng    6:35 p.m. 17 Tháng 9, 2024

    Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.


    • 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ự.

      1 phản hồi

      • 1
        PY2CTranDinhBaoNam    2:58 p.m. 10 Tháng 2, 2024

        tự cách nha "_"


        • 2
          PY2CTranDinhBaoNam    2:57 p.m. 10 Tháng 2, 2024

          s=str(input())
          a=[]
          cnt=0
          si=s[0]
          for i in s:
          if si==i:
          cnt+=1
          else:
          a.append(cnt)
          cnt=1
          si=i
          a.append(cnt)
          print(max(a))

          2 phản hồi

          • 0
            havanxt    8:42 a.m. 1 Tháng 8, 2023

            SOs