首页 > 代码库 > [Hackerrank]时间转换Time Conversion

[Hackerrank]时间转换Time Conversion

题目链接

    大致要求是说给定一个十二小时制的时间,给出它的二十四小时制的形式。

    输入格式:hh:mm:ssAM 或者 hh:mm:ssPM,其中01≤hh≤12,00≤mm,ss≤59

思路

    判断字符串第9位,为‘P’就说明是下午的时间,转换一下hh至数字后+12再输出。

    没想到这么一道水题错了4个点……

    再一读题,注意到题干里note部分,发现鬼畜的正午和午夜分别是12:00PM和12:00AM,对应的二十四小时时间就是12:00和00:00,真是活久见。

    所以last version就是先判hh是不是12,是12就归零,不是就不管它;接着如果是PM就照旧+12,AM不变即可。

Code

var
    st:string;
    i:longint;
begin
    readln(st);
    if st[1]+st[2]=‘12‘ then
        begin
            st[1]:=‘0‘;
            st[2]:=‘0‘;
        end;
    if st[9]=‘P‘ then
        begin
            write((ord(st[1])-48)*10+(ord(st[2])-48)+12,‘:‘,st[4],st[5],st[6],st[7],st[8]);
            writeln;
        end
    else
        begin
            for i:=1 to 8 do
                write(st[i]);
            writeln
        end
end.

  

代码放在了ubuntu pastebin

后续

    写这道题不是因为它难,而是因为它玄学的思路……有兴趣可以看一下上一个版本的代码,然后错三个点。在此马克留个意——

    好吧我承认这是生活经验问题……十二小时制真是神奇╭(╯^╰)╮

  • 封面Pixiv ID=64173982

[Hackerrank]时间转换Time Conversion