题目描述

  • 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。
    假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
    他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,

    声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。

  • 输入描述:
    输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾

  • 输出描述:
    输出渊子真正的密文

  • 示例1
    输入

    YUANzhi1987

  • 输出

    zvbo9441987

代码和思路

package org.lht.boot.lang.suanfa;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;/*** @author haitao.li* @description: 题目描述* 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。* 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,* 怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。* 他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,* 就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,* <p>* 声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。* <p>* <p>* 输入描述:* 输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾* <p>* 输出描述:* 输出渊子真正的密文* <p>* 示例1* 输入* <p>* YUANzhi1987* 输出* <p>* zvbo9441987* @date 2021/4/29 15:06*/
public class Huawei简单密码 {/*** 解决  1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0* 上面这个问题,可以使用多个if判断。牛客网最优解即多个if* <p>* if (c >= 'A' && c < 'Z') {* c = (char) (c + 'b' - 'A');* } else if (c == 'Z') {* c = 'a';* } else if (c>='a' && c<='c') {* c = '2';* } else if (c>='d' && c<='f') {* c = '3';* } else if (c>='g' && c<='i') {* c = '4';* } else if (c>='j' && c<='l') {* c = '5';* } else if (c>='m' && c<='o') {* c = '6';* } else if (c>='p' && c<='s') {* c = '7';* } else if (c>='t' && c<='v') {* c = '8';* } else if (c>='w' && c<='z') {* c = '9';* }** @param args* @throws IOException*/public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String str;StringBuilder builder = new StringBuilder();while (!(str = reader.readLine()).equals("")) {char[] chars = str.toCharArray();for (int i = 0; i < chars.length; i++) {if (chars[i] >= '0' && chars[i] <= '9') {continue;}if (chars[i] >= 'a' && chars[i] <= 'z') {if (chars[i] == 'v') {chars[i] = '8';} else if (chars[i] == 's') {chars[i] = '7';} else if (chars[i] == 'z' || chars[i] == 'y') {chars[i] = '9';} else {int n = chars[i] - 'a' + 1;int index = n / 3;if (n % 3 == 0) {chars[i] = (char) (index + 1 + 48);} else {chars[i] = (char) ((index + 2) + 48);}}}if (chars[i] >= 'A' && chars[i] < 'Z') {chars[i] = (char) (chars[i] + 33);}if (chars[i] == 'Z') {chars[i] = 'a';}}builder.append(chars);}System.out.println(builder.toString());}/*** 数组思维解法*//***   public static char[] tab = new char[]{'2','2','2','3','3','3','4','4','4','5','5','5','6',*             '6','6','7','7','7','7','8','8','8','9','9','9','9','0'};*     public static void main(String[] args) throws Exception {*         InputStream in = System.in;*         char c;*         StringBuilder sb = new StringBuilder();*         while((c = (char)in.read()) != '\n') {*             if(c >= 'A' && c < 'Z') {*                 c = (char)(c + 33);*             } else if(c == 'Z') {*                 c = 'a';*             } else if(c >= 'a' && c <= 'z') {*                 c = tab[c - 'a'];*             }*             sb.append(c);*         }*         System.out.println(sb.toString());*     }*/
}

笔试算法《简单密码》相关推荐

  1. java笔试之简单密码

    密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了.哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全. 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便 ...

  2. php实现 简单密码(代码颜色变化)

    php实现  简单密码(代码颜色变化) 一.总结 一句话总结:写代码的时候一定要关注代码的颜色变化,不然低级错误害死人.常量变量会有不同颜色,所以$str少$符号变成常量的时候很容易发现. 1.变量$ ...

  3. 1138:破解简单密码

    1138:破解简单密码 Description 密码是我们生活中非常重要的东西,我们的那么一点不能说的秘密就全靠它了.哇哈哈. 接下来原子要在密码上再加一套密码,虽然简单但也安全. 假设老王原来一个B ...

  4. 华为机试 HJ21简单密码【java实现】

    描述 现在有一种密码变换算法. 九键手机键盘上的数字与字母的对应: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0, ...

  5. Scratch编程 烧脑算法——换位密码

    Hello,我是小恐龙.今天编一个超烧脑算法--换位密码.先来了解一下什么是换位密码: 明文:hello,everyone.iamminidinosaur. 密钥:(1 5 4) 密文:lelohee ...

  6. C/C++编程题之简单密码

    在牛客上刷到简单密码题,现在将通过的代码贴一下,供大家参考. 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了.哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全. 假 ...

  7. Re: 一著名软件公司的java笔试算法题!

    主 题: Re: 一著名软件公司的java笔试算法题! 作 者:   szlhj () 等 级:   信 誉 值:   95 所属论坛:   Java J2SE / 基础类 问题点数:   20 回复 ...

  8. 【华为机试Python3题解】HJ21简单密码

    文章目录 题目介绍 题解1:逐一情况处理 题解2:提前建映射表 题目介绍 原题链接:HJ21 简单密码 描述 现在有一种密码变换算法. 九键手机键盘上的数字与字母的对应: 1–1, abc–2, de ...

  9. 删除字符串中出现次数最少的字符,汽水瓶,简单密码

    删除字符串中出现次数最少的字符 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除.输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序. 输入描述:字符串只包含小写英文字母, ...

最新文章

  1. json对象与.net对象互相转换
  2. 一步一步asp.net_三层构架的学习
  3. SAP 电商云 Spartacus UI 模块延迟加载的入口程序
  4. 1-9其他数据库注入
  5. [Leetcode][第120题][JAVA][三角形最小路径和][动态规划][递归]
  6. 【ES6(2015)】Generator
  7. ubuntu20有道词典亲测安装记录
  8. JavaScript 数组常见操作 (二)
  9. k均值聚类算法案例 r语言iris_聚类分析—系统聚类
  10. 《Java技术》预备作业总结
  11. JS 大陆香港台湾手机格式校验
  12. 乐高叉车wedo教案_特色课程——乐高wedo动力机械
  13. 2021年天猫淘宝双12,京东双十二活动时间以及玩法介绍
  14. windows server 远程登录后总是出现屏幕键盘,烦死人了
  15. 磊科路由器dns服务器老要修复,路由器dns异常解决方法
  16. NFTScan x TiDB丨一栈式 HTAP 数据库为 Web3 数据服务提供毫秒级多维查询
  17. 关于一次mac维修的经历
  18. 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速【转】
  19. 移动支付App在激增中成长、 安全与创新需并驾齐驱!
  20. 四连通 matlab,针对matlab 四连通,和八连通的详解

热门文章

  1. [百度开放云骑士之夜]Be a knight at the night
  2. 新刊邀稿:顶级优刊,中科院1区SCI(TOP),极速审稿
  3. [源码阅读] 阿里SOFA服务注册中心MetaServer(1)
  4. html 《br /》和 《br》的区别
  5. 享誉业界学界的2022年SuperComputing(SC22)又要来了,基于FPGA的硬件数据处理加速器值得关注
  6. 从入门到精通,Java学习路线导航(附学习资源)
  7. 程序猿之华丽转身:必杀之八技
  8. jquery.chosen.css,jquery-chosen 选择框插件
  9. 神舟Z7-SL7S3(蓝天P650RG/RE准系统)刷BIOS解决CPU的uncore功耗大于10W,修改启动Logo详细步骤
  10. 网络爬虫系列之一:通过URL下载网页