java实现斐波那契数列字符串加密

本文介绍了使用Java编写的字符串加密方法,利用斐波那契数列的规律对输入字符串中的每个字符进行偏移,提供了代码示例和内存优化(记忆化搜索)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java实现斐波那契数列字符串加密


描述

给你一串未加密的字符串sr,通过对字符串的每一个字母进行改变来实现加密,加密方式是在每一个字母sti偏移特定数组元素a0的量,数组a前三位已经赋值:a[0]=1,a[1]=2,a[2]=4。当i>=3时,数组元素a[i]=a[i-1]+a[-2]+a[i-3]。

例如:原文 abcde 加密后 bdgkr,其中偏移量分别是1.2.4,7.13。

输入描述:
第一行为一个整数n(1<=n<=1000),表示有n组测试数据,每组数据包含一行,原文str(只含有小写字母,0<长度<=50)。

输出描述:
每组测试数据输出一行,表示字符串的密文。

用例:

输入:
1
xyz

输出:
yad

java代码实现(开箱即用)

package com.des.data.test;

import java.util.HashMap;
import java.util.Map;

public class StringEncryption {

    private static Map<Integer, Integer> memo = new HashMap<>();

    public static void main(String[] args) {
        String str = "xyz";
        System.out.println(solution(str));
    }

    public static String solution(String str) {
        StringBuffer strRes = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            int mw = mwei(i + 1);
            int ascii = (int) c;
            int asciiN = (ascii - 'a' + mw) % 26 + 'a';
            char cN = (char) asciiN;
            strRes.append(cN);
        }
        return strRes.toString();
    }

    private static int mwei(int i) {
        if (i <= 2) {
            return i;
        }
        if (i == 3) {
            return 4;
        }
        if (memo.containsKey(i)) {
            return memo.get(i);
        }
        //记忆化搜索来计算斐波那契数列
        int resi = mwei(i - 1) + mwei(i - 2);
        memo.put(i, resi);
        return resi;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值