[Buổi 20][Chuỗi][HW] Bài 3: Hồ sơ độ mạnh mật khẩu


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Hồ sơ độ mạnh mật khẩu

Bối cảnh

Một hệ thống không yêu cầu quyết định mật khẩu hợp lệ/không hợp lệ ngay, mà tạo "hồ sơ độ mạnh" để lớp kiểm tra sau sử dụng. Với một chuỗi bất kỳ, cần đếm số chữ hoa, chữ thường, chữ số và ký tự khác; đồng thời tìm độ dài lớn nhất của một đoạn ký tự liên tiếp thuộc cùng nhóm (uppercase/lowercase/digit/other). Ví dụ AAa11! có run nhóm dài nhất là 2.

Bài Medium buộc người học không chỉ đếm độc lập mà còn duy trì state của nhóm trước đó và độ dài run hiện tại. Việc dùng các hàm <cctype> phải được đặt sau khi ép ký tự sang unsigned char để tránh hành vi không xác định ở dữ liệu mở rộng. Input được đọc bằng getline nên có thể chứa space; space được xếp vào nhóm other.

Yêu cầu

  1. Đọc toàn bộ một dòng.
  2. Đếm uppercase/lowercase/digit/other.
  3. Tìm longest run của cùng nhóm ký tự.
  4. In upper lower digit other longestRun.

Input

Một dòng bất kỳ, có thể rỗng.

Output

Một dòng 5 số.

Ràng buộc

|s|≤5000.

Ví dụ 1

Input

AAaa11!!

Output

2 2 2 2 2

Giải thích

Chuỗi AAaa11!! có 2 chữ hoa A, 2 chữ thường a, 2 chữ số 1 và 2 ký tự ! thuộc nhóm other. Các run theo nhóm là AA, aa, 11, !!, mỗi run dài 2, nên longestRun=2. Output là 2 2 2 2 2.

Ví dụ 2

Input

Password123!

Output

1 7 3 1 7

Giải thích

Password123! có một chữ hoa P, 7 chữ thường assword, ba chữ số 123 và một dấu !. Run chữ thường dài nhất là 7, lớn hơn run digit dài 3, nên kết quả 1 7 3 1 7.

Thông tin học tập

  • Module: M06
  • Buổi: B20
  • Loại bài: HOMEWORK
  • Độ khó: Medium
  • Concepts: std::string, character classes, longest run, cctype, validation summary
  • Giới hạn kiến thức: B01-B20
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo