Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Giờ, Phút và Giây

Chuyển đổi một khoảng thời gian (tính bằng giây) thành chuỗi ngắn gọn, dễ đọc.

Bạn sẽ học được gì

  • Tách giây thành giờ, phút và giây
  • Dùng chia nguyên và chia dư cùng nhau
  • Định dạng các phần thành chuỗi dễ đọc

Đề bài

Xem bản gốc (English)

Tách một khoảng thời gian thành giờ, phút và giây. Viết đơn vị lần lượt là h, m, s, mỗi đơn vị cách nhau một dấu cách. Bỏ qua bất kỳ đơn vị nào có giá trị bằng 0, ngoại trừ trường hợp giây bằng 0 thì phải ghi là 0s.

Cài đặt hàm format_duration(seconds).

Đầu vào

seconds: Tổng số giây của khoảng thời gian.

Đầu ra

Trả về chuỗi thời lượng đã định dạng, ví dụ 2h 2m 5s.

Ràng buộc

0 ≤ seconds ≤ 1.000.000.000. Số giờ có thể lớn hơn 23; đây là khoảng thời gian, không phải thời điểm trong ngày.

Ví dụ

Ví dụ 1
Đầu vào:
seconds = 7325

Kết quả mong đợi:
expected = "2h 2m 5s"
Đầu vào:
long long seconds = 7325;

Kết quả mong đợi:
std::string expected = "2h 2m 5s";
Đầu vào:
long seconds = 7325;

Kết quả mong đợi:
string expected = "2h 2m 5s";

Giải thích

7325 = 2 × 3600 + 2 × 60 + 5.

Ví dụ 2
Đầu vào:
seconds = 120

Kết quả mong đợi:
expected = "2m"
Đầu vào:
long long seconds = 120;

Kết quả mong đợi:
std::string expected = "2m";
Đầu vào:
long seconds = 120;

Kết quả mong đợi:
string expected = "2m";

Giải thích

120 giây đúng bằng 2 phút. Bỏ qua phần giờ và giây vì đều bằng 0.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Tách tổng số giây thành các đơn vị lớn trước, rồi chỉ định dạng các phần khác 0.

Gợi ý 2

Giữ thứ tự giờ, phút, giây, với khoảng trắng giữa các đơn vị được giữ lại.

Gợi ý 3

Nếu mọi đơn vị lớn hơn đều bằng 0, vẫn phải đảm bảo kết quả đúng là 0s khi thời lượng bằng 0.

Độ phức tạp mong đợi

thời gian O(1), bộ nhớ phụ O(1)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.