华为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);
       }
    }
}
相关推荐
Run_Teenage1 分钟前
C++:智能指针的使用及其原理
开发语言·c++·算法
WX-bisheyuange1 小时前
基于Spring Boot的民宿预定系统的设计与实现
java·spring boot·后端·毕业设计
码界奇点1 小时前
Java设计模式精讲从基础到实战的常见模式解析
java·开发语言·设计模式·java-ee·软件工程
mit6.8241 小时前
二维差分+前缀和
算法
民乐团扒谱机1 小时前
自然的算法:从生物进化到智能优化 —— 遗传算法的诗意与硬核“
算法
希望有朝一日能如愿以偿2 小时前
力扣每日一题:仅含1的子串数
算法·leetcode·职场和发展
四维碎片2 小时前
【Qt】配置安卓开发环境
android·开发语言·qt
西游音月2 小时前
(7)框架搭建:Qt实战项目之主窗体导航栏、状态栏
开发语言·qt
3***49962 小时前
Swift Experience
开发语言·ios·swift
iFlow_AI2 小时前
iFlow CLI Hooks 「从入门到实战」应用指南
开发语言·前端·javascript·人工智能·ai·iflow·iflow cli