Pintia题解——7-17 强迫症

7-17 强迫症

原题:

小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月 格式。对于那些只写了年份后两位的信息,我们默认小于 22 都是 20 开头的,其他都是 19 开头的。

输入格式:

输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。

输出格式:

在一行中按标准格式 年年年年-月月 将输入的信息整理输出。

.

解题思路:

  1. 引入readline模块并创建接口对象:首先将readline模块引入,并使用createInterface方法创建一个接口对象rl。该对象设置了输入流为标准输入。
  2. 读取输入并存储:通过监听'line'事件,将输入存储在数组buf中。
  3. 解析输入并处理字符串:将数组buf中的第一个元素赋值给变量preStr,截取除最后两个字符外的子串。将数组buf中的第一个元素的最后两个字符赋值给变量lastStr
  4. 根据条件生成输出结果:判断preStr的长度是否为4,如果是,则将preStrlastStr用连字符连接,输出结果。如果不是,则判断preStr是否小于22,如果是,则将20与preStr相连,再拼接上lastStr输出结果;如果不是,则将19与preStr相连,再拼接上lastStr输出结果。
  5. 输出结果:将生成的结果字符串输出。

.

JavaScript(node)代码:

const r = require("readline");
const rl = r.createInterface({
    
    
    input: process.stdin
});
let buf = [];
rl.on('line', (input) => buf.push(input));
rl.on('close', () => {
    
    
    const preStr = buf[0].substr(0, buf[0].length - 2);
    const lastStr = buf[0].slice(-2);
    console.log(preStr.length == 4 ? (preStr + "-" + lastStr) : (parseInt(preStr) < 22 ? (20 + preStr) : (19 + preStr)) + "-" + lastStr);
});

.

复杂度分析:

时间复杂度:O(1)
空间复杂度:O(1)

猜你喜欢

转载自blog.csdn.net/Mredust/article/details/133519507