华为机试--字符串ASC码+偏移量实现加密

华为机试–字符串ASC码+偏移量实现字符串加密的JS实现

题目描述:给出原文字符串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(只含有小写字母,长度大于0小于50)。
输出描述:每组测试数据输出一行,表示密文。

//使用VScode自测通过
//n=parseInt(readline())
// for(var i=0;i<n;i++){
  // var str=readline()
   var str='erskaadaaz' //自测数据
   var arr=[]
   for(var j=0;j<str.length;j++){
       var num1= str.charCodeAt(j)//获取当前字符ASC码
       var num2=fn(j)  //获取当前偏移量
       var num3=num1+num2 
       if(num3>=97&&num3<=122){
          arr.push(String.fromCharCode(num3))
       }
       else{
          var num4=97+(num3-97)%26
          arr.push(String.fromCharCode(num4))
       }
   }
   console.log(arr.join(''))
// }
function fn(num){
    if(num==0){
        return 1
    }
    else  if(num==1){
        return 2
    } 
    else if(num==2){
        return 4
    }
    else{
        return fn(num-1)+fn(num-2)+fn(num-3)
    }
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值