Xác định thời gian tăng thêm (tính theo phút) để thời gian dạng hh:mm thành xâu đối xứng

Cho xâu s là xâu được dùng để biểu diễn thời gian dưới dạng giờ và phút (hh:mm), nếu số giờ hoặc số phút nhỏ hơn 10 thì sẽ được thêm vào số 0 ở đằng trước để đảm s luôn có độ dài là 5. Ví dụ về các giá trị của xâu s : "01:21", "17:03", "04:08", "23:59", "00:00"...

Hãy viết hàm xác định xem cần tăng thêm ít nhất bao nhiêu phút để s trở thành xâu đối xứng, biết xâu đối xứng là xâu mà khi viết từ phải qua trái hay từ trái qua phải là như nhau ( "aba", "abba", "codedoc" ).

1 Like

Thứ nhất, với n là độ dài của xâu s, k bằng n/2 lấy phần nguyên (k, n > 0), bạn thử để ý trong xâu giữa kí tự đầu và kí tự thứ n, kí tự thứ 2 và kí tự n - 1,… kí thự thứ k và kí thứ n - k + 1 xem có gì đặc biệt :smiley:.

Thứ hai, gọi số giờ là t, bạn thử lấy t mod 10.10 + t/10 lấy phần nguyên xem ra cái gì :rofl:.

P/s: Đối xứng ở trong trường hợp này là từ palindrome trong tiếng Anh.

3 Likes

mình không hiểu đoạn này lắm bạn có thể giải thích thêm không ?

Ví dụ: 12 mod 10 = 1
1.10 = 10
12/10 lấy phần nguyên(chẳng biết gọi tắt là gì) = 1
=> 12 mod 10.10 + 12/10 lấy phần nguyên = 21
Thế này thì bạn hiểu chưa :rofl:.

1 Like

ok mình hiểu rồi :joy: :joy: :joy:

Tách(split) xâu s ra mảng chứa giờ và phút bằng dấu hai chấm, ví dụ: “23:42” thành [“23”, “42”] -> Gán giá trị giờ và phút(dạng xâu) trong mảng trên vào biến riêng -> Ép hai biến đó sang kiểu số nguyên, tiếp theo thì tự nghĩ ra đi bạn :smiley:

1 Like

hmm =( :expressionless: :expressionless: :expressionless:

hh:mm chỉ giới hạn trong 24 giờ từ 00:00 tới 23:59 thì duyệt trâu từng phút xem cái nào tạo thành chuỗi đối xứng, rồi cho hết vào 1 mảng, chỉ cần tìm nhị phân hh:mm hiện tại ở đâu trong mảng đó rồi lấy chuỗi đối xứng tiếp theo trừ cho hh:mm là ra :joy:

4 Likes

Chẳng biết giữa cách của mình và bạn, cách nào nhanh hơn?

số nhỏ quá cách nào cũng vậy :V

4 Likes

Lên trên này là hỏi cách giải(lí thuyết) chứ không hỏi code, mà cái này đơn giản mà, code chưa tới 100 dòng đâu :rofl:

Vâng ạ, thế thôi cũng đc =D

mình code còn gà lắm nên đối với mình đây là khó rồi =(

Thôi, lên google tìm cách split xâu, cách ép kiểu là ra mà :smiley:. Có cần đưa link không? :slightly_smiling_face:

1 Like

Sau khi parse xong thì hardcode các mốc thời gian bằng số rồi dùng lambda tìm trong đó :smiley:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?