首页 > 编程语言 >算法刷题-简单密码-JAVA

算法刷题-简单密码-JAVA

时间:2023-02-28 22:47:11浏览次数:41  
标签:JAVA -- s1 System char 密码 算法 刷题

0x00 引言

为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。

题解只写自己理解的解法,其他解法不再增加。题目与解析均在代码里面。

0x01 难度等级

简单

0x02 代码

package 简单;

import java.util.Scanner;

/*
*
描述
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应:
* 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,
* 把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,
*
*如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
是X的ascii码值加32再+1(a是97 A是65,所以是差变成小a需要加32),因为往后移动了一位 ,需要再加1
*
数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
输入描述:
输入一组密码,长度不超过100个字符。

输出描述:
输出密码变换后的字符串

示例1
输入:
YUANzhi1987

输出:
zvbo9441987
*
*
*
* */
public class 简单密码 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        Scanner s = new Scanner(System.in);
        String s1 = s.nextLine();
        char[] m=new char[s1.length()];
        for (int i = 0; i < s1.length(); i++) {
            m[i]=(char)getI(s1.charAt(i));
//            System.out.println(m[i]);
        }
//        System.out.println("------------");
        for (int i = 0; i < m.length; i++) {
            System.out.print(m[i]);
        }
    }

    public static int getI(char i) {
            if (i >='A' && i <='Y') {
                return (char) (i + 33);
            } else if (i == 'Z') {
                return 'a';
            } else if(i >='a' && i <='z'){
                switch (i) {
                    case 'a':
                    case 'b':
                    case 'c':
                        return '2';
                    case 'd':
                    case 'e':
                    case 'f':
                        return '3';
                    case 'g':
                    case 'h':
                    case 'i':
                        return '4';
                    case 'j':
                    case 'k':
                    case 'l':
                        return '5';
                    case 'm':
                    case 'n':
                    case 'o':
                        return '6';
                    case 'p':
                    case 'q':
                    case 'r':
                    case 's':
                        return '7';
                    case 't':
                    case 'u':
                    case 'v':
                        return '8';
                    default:
                        return '9';
                }
            }else {
                return i;
            }
        }

}

0x03 算法思想

(1)考查对Ascii码表的了解

(2)考查对switch/case穿透的使用

0x04 运行结果

标签:JAVA,--,s1,System,char,密码,算法,刷题
From: https://www.cnblogs.com/cute-puli/p/17166351.html

相关文章

  • java学习日记20230227-dos原理
    DOS原理 磁盘操作系统disoperatingsystemmdc:\\temp创建文件夹rdc:\\jyltemp移除文件夹相对路径和绝对路径 相对路径:从当前目录开始定位形成的路径绝对路径......
  • 算法刷题-统计大写字母个数-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • (未完成)JAVAWEB学习——
    一、Servlet开发1.sun公司提供的一种动态web资源开发技术,本质上就要是一段Java小程序,可以将Servlet加入到容器中运行Servlet。*servlet容器--能够运行servlet的环境就......
  • 算法刷题-等差数列-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 算法刷题-求最大连续bit数-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 算法刷题-求int型正整数在内存中存储时1的个数-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 排序算法(C++实现)
    1、排序算法总结时间复杂度空间复杂度稳定性原地排序直接插入排序O(n2)O(1)√√折半插入排序O(n2)O(1)√√希尔排序最坏O(n2)O(1)×√......
  • 算法刷题-查找组成一个偶数最接近的两个素数-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • argument keyword in JavaScript Functions
    argument是一个所有(非箭头)函数都有的对象,它是一个类似数组的对象(但它不是Array)详见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/argum......
  • java maven 打包可执行jar文件
    <build><plugins><!--使用maven-assembly-plugin插件打包--><plugin><groupId>org.apache.maven.plugins</groupId><artif......