题解 | #字符串加解密#

字符串加解密

http://www.nowcoder.com/practice/2aa32b378a024755a3f251e75cbf233a

const plain = readline().split(''); // 明文
const cypher = readline().split(''); // 密文
/**
 加密函数
*/
function encryption(p) {
  const letterReg = /[a-z]/i;
  if (letterReg.test(p)) {
    // 是字母
    const lowerA = 'a'.codePointAt();
    const upperA = 'A'.codePointAt();
    const lowerZ = 'z'.codePointAt();
    const upperZ = 'Z'.codePointAt();
    
    const pCp = p.codePointAt();
    if (pCp < lowerA) {
      // 大写字母
      if (pCp === upperZ) {
        // p 是大写'Z'
        return 'a';
      }
      // p是大写'A'~'Y'
      const next = String.fromCodePoint(pCp + 1);
      return next.toLowerCase();
    }
    if (pCp === lowerZ) {
      // p 是 小写'z'
      return 'A';
    } 
    // p 是小写'a'~'y'
    const next = String.fromCodePoint(pCp + 1);
    return next.toUpperCase();
  } else if (!Number.isNaN(Number(p))) {
    // 是数字
    const n = Number(p);
    if (n === 9) {
      return 0;
    }
    return n + 1;
  }
  return '';
}
// 解密函数
function decryption(p) {
  const letterReg = /[a-z]/i;
  if (letterReg.test(p)) {
    // 是字母
    const lowerA = 'a'.codePointAt();
    const upperA = 'A'.codePointAt();
    const lowerZ = 'z'.codePointAt();
    const upperZ = 'Z'.codePointAt();
    
    const pCp = p.codePointAt();
    if (pCp < lowerA) {
      // 大写字母
      if (pCp === upperA) {
        // p 是大写'A'
        return 'z';
      }
      // p是大写'B'~'Z'
      const next = String.fromCodePoint(pCp - 1);
      return next.toLowerCase();
    }
    if (pCp === lowerA) {
      // p 是 小写'a'
      return 'Z';
    } 
    // p 是小写'b'~'z'
    const next = String.fromCodePoint(pCp - 1);
    return next.toUpperCase();
  } else if (!Number.isNaN(Number(p))) {
    // 是数字
    const n = Number(p);
    if (n === 0) {
      return 9;
    }
    return n - 1;
  }
  return '';
}

const plainRes = plain.map(p => encryption(p));
console.log(plainRes.join(''));

const cypherRes = cypher.map(p => decryption(p));
console.log(cypherRes.join(''));

全部评论

相关推荐

嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务