华为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);
       }
    }
}
相关推荐
RainbowSea1 天前
12. LangChain4j + 向量数据库操作详细说明
java·langchain·ai编程
RainbowSea1 天前
11. LangChain4j + Tools(Function Calling)的使用详细说明
java·langchain·ai编程
考虑考虑1 天前
Jpa使用union all
java·spring boot·后端
用户3721574261351 天前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊1 天前
Java学习第22天 - 云原生与容器化
java
聚客AI1 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
渣哥1 天前
原来 Java 里线程安全集合有这么多种
java
间彧1 天前
Spring Boot集成Spring Security完整指南
java
间彧1 天前
Spring Secutiy基本原理及工作流程
java
Java水解1 天前
JAVA经典面试题附答案(持续更新版)
java·后端·面试