กลับไปยังโจทย์
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

ชั่วโมง นาที และวินาที

แปลงระยะเวลา (หน่วยวินาที) ให้อยู่ในรูปแบบข้อความที่อ่านง่ายและกระชับ

สิ่งที่คุณจะได้เรียนรู้

  • แยกวินาทีเป็นชั่วโมง นาที และวินาที
  • ใช้การหารและเศษร่วมกัน
  • จัดส่วนต่าง ๆ เป็นสตริงที่อ่านง่าย

โจทย์

แยกระยะเวลาออกเป็นชั่วโมง นาที และวินาที ให้เขียนหน่วยเป็น h, m และ s ตามลำดับ โดยแต่ละหน่วยคั่นด้วยช่องว่างหนึ่งช่อง ข้ามหน่วยที่มีค่าเป็นศูนย์ ยกเว้นกรณีที่วินาทีเป็นศูนย์ ให้เขียนเป็น 0s

ให้เขียนฟังก์ชัน format_duration(seconds)

อินพุต

seconds: ระยะเวลาทั้งหมดในหน่วยวินาที

เอาต์พุต

คืนค่าระยะเวลาที่จัดรูปแบบแล้ว เช่น 2h 2m 5s

เงื่อนไข

0 ≤ seconds ≤ 1,000,000,000. จำนวนชั่วโมงอาจมากกว่า 23 ได้ เนื่องจากเป็นระยะเวลา ไม่ใช่เวลาของวัน

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
seconds = 7325

ผลลัพธ์ที่คาดหวัง:
expected = "2h 2m 5s"
อินพุต:
long long seconds = 7325;

ผลลัพธ์ที่คาดหวัง:
std::string expected = "2h 2m 5s";
อินพุต:
long seconds = 7325;

ผลลัพธ์ที่คาดหวัง:
string expected = "2h 2m 5s";

คำอธิบาย

7325 = 2 × 3600 + 2 × 60 + 5

ตัวอย่างที่ 2
อินพุต:
seconds = 120

ผลลัพธ์ที่คาดหวัง:
expected = "2m"
อินพุต:
long long seconds = 120;

ผลลัพธ์ที่คาดหวัง:
std::string expected = "2m";
อินพุต:
long seconds = 120;

ผลลัพธ์ที่คาดหวัง:
string expected = "2m";

คำอธิบาย

120 วินาที เท่ากับ 2 นาทีพอดี ให้ละเว้นชั่วโมงและวินาทีที่เป็นศูนย์

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

แยกจำนวนวินาทีทั้งหมดเป็นหน่วยใหญ่ก่อน แล้วค่อยจัดรูปแบบเฉพาะส่วนที่ไม่เป็นศูนย์

คำใบ้ 2

เรียงชั่วโมง นาที และวินาทีตามลำดับ พร้อมเว้นวรรคระหว่างหน่วยที่ใช้

คำใบ้ 3

ถ้าหน่วยใหญ่ทั้งหมดเป็นศูนย์ ก็ต้องให้ผลลัพธ์เป็น 0s เมื่อ duration เป็นศูนย์

ความซับซ้อนที่คาดหวัง

เวลา O(1), หน่วยความจำเพิ่ม O(1)

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก