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

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

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

数组a前三位已经赋值:a0=1,a1=2,a2=4。当i=3时,数组元素ai=ai-1+ai-2+ai-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);
       }
    }
}
相关推荐
徐小夕4 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
threelab4 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
武器大师724 小时前
lv_binding_js 代码解读
开发语言·javascript·ecmascript
不知名的老吴4 小时前
线程的生命周期之线程“插队“
java·开发语言·python
akunkuntaimei4 小时前
2026年高考数学各省真题及答案(完整版)
算法·高考
ANnianStriver4 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
Hello:CodeWorld5 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
杨了个杨89825 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
kaikaile19955 小时前
数字全息图处理系统(C# 实现)
开发语言·c#
8Qi86 小时前
LeetCode 516:最长回文子序列
算法·leetcode·职场和发展·动态规划