华为OD真题--字符串加密

2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)or2023年华为OD真题机考题库大全-带答案(持续更新)

"给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量,

数组a前三位已经赋值:a[0]=1,a[1]=2,a[2]=4。当i=3时,数组元素a[i]=a[i-1]+a[i-2]+a[i-3],

例如:原文 abcde 加密后 bdgkr,其中偏移量分别是1,2,4,7,13。";

输入描述:第一行是整数n,表示n组测试数据。每组数据包含一行,原文str(只含有小写字母)

例如:

输入

1

xy

输出

ya

java 复制代码
public class StringEncrypt {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int stringLine = Integer.parseInt(sc.nextLine());
        String[]encrypts = new String[stringLine];
        for (int i = 0; i < stringLine; i++){
            encrypts[i] = sc.next();
        }
        String[] end1 = encryptMe(encrypts);
        Arrays.stream(end1).forEach(System.out::println);
    }

    public static String[] encryptMe(String[]encrypts){
        String[] end = new String[encrypts.length];
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < encrypts.length; i++){
            char[] t1 = encrypts[i].toCharArray();
            for (int j = 0; j < t1.length;j++){
                //计算偏移量
                int offset1 = offset(j);
                //生成字符
                char value = (char) ((int)t1[j] + offset1);
                if (value > 122){
                     value = (char) ((int)t1[j] + offset1 - 26);
                }
                sb.append(value);
            }
            end[i] = sb.toString();
            sb.setLength(0);
        }
        return end;
    }

    /**
     * 偏移量计算
     * @param i
     * @return
     */
    public static int offset(int i){
       if (i == 0){
           return 1;
       } else if (i == 1) {
           return 2;
       } else if (i == 2) {
           return 4;
       }else {
           return offset(i-1) + offset(i-2) + offset(i - 3);
       }
    }
}
相关推荐
庸俗今天不摸鱼2 分钟前
Canvas进阶-4、边界检测(流光,鼠标拖尾)
开发语言·前端·javascript·计算机外设
菠菠萝宝3 分钟前
【Java八股文】10-数据结构与算法面试篇
java·开发语言·面试·红黑树·跳表·排序·lru
奔跑吧邓邓子6 分钟前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程
不会Hello World的小苗10 分钟前
Java——链表(LinkedList)
java·开发语言·链表
lsx20240622 分钟前
Perl 面向对象编程指南
开发语言
curemoon38 分钟前
理解都远正态分布中指数项的精度矩阵(协方差逆矩阵)
人工智能·算法·矩阵
Allen Bright43 分钟前
【Java基础-46.3】Java泛型通配符详解:解锁类型安全的灵活编程
java·开发语言
柃歌1 小时前
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记
java·数据结构·笔记·学习·算法
柃歌1 小时前
【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
java·数据结构·笔记·学习·算法
画个逗号给明天"1 小时前
C++STL容器之list
开发语言·c++