首页 > 其他分享 >力扣---848. 字母移位

力扣---848. 字母移位

时间:2023-01-26 23:55:25浏览次数:36  
标签:--- arr shift 字母 848 力扣 shifts length 移位

有一个由小写字母组成的字符串 s,和一个长度相同的整数数组 shifts。
我们将字母表中的下一个字母称为原字母的 移位 shift() (由于字母表是环绕的, 'z' 将会变成 'a')。
    例如,shift('a') = 'b', shift('t') = 'u', 以及 shift('z') = 'a'。
对于每个 shifts[i] = x , 我们会将 s 中的前 i + 1 个字母移位 x 次。
返回 将所有这些移位都应用到 s 后最终得到的字符串 。

示例 1:
输入:s = "abc", shifts = [3,5,9]
输出:"rpl"
解释:
我们以 "abc" 开始。
将 S 中的第 1 个字母移位 3 次后,我们得到 "dbc"。
再将 S 中的前 2 个字母移位 5 次后,我们得到 "igc"。
最后将 S 中的这 3 个字母移位 9 次后,我们得到答案 "rpl"。

示例 2:
输入: s = "aaa", shifts = [1,2,3]
输出: "gfd"

提示:
    1 <= s.length <= 105
    s 由小写英文字母组成
    shifts.length == s.length
    0 <= shifts[i] <= 109
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shifting-letters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

字母表环绕这点我们可以通过整除26来解决。

为了避免超出int型数据范围,并且优化时间,我们可以利用动态规划的思想。

代码如下:

class Solution {
    public String shiftingLetters(String s, int[] shifts) {
        char[] arr = s.toCharArray();
        for (int i = shifts.length - 2; i >= 0; i --) {
            shifts[i] += shifts[i + 1] % 26;
        }
        for (int i = 0; i < arr.length; i ++) {
            arr[i] = (char)(((arr[i] - 'a' + shifts[i]) % 26) + 'a');
        }
        return String.valueOf(arr);
    }
}

运行结果如下:

运行结果

 

标签:---,arr,shift,字母,848,力扣,shifts,length,移位
From: https://www.cnblogs.com/allWu/p/17068409.html

相关文章

  • No Cortex-M Device found in JTAG chain 问题的解决
     出现下载失败,被坑了了两次记录一下出现原因总结1、Keil版本太低,程序下载不了单片机,建议卸载重装,会解决2、升级完Keil但是一段时间之后又出现问题,解决方法(1)首先打开S......
  • 7、tensorboard的使用(一)-------add_scalar()
    对应在pytorchcode文件夹里的test_tensorboard.py导入类:fromtorch.utils.tensorboardimportSummaryWriter创建实例:writer=SummaryWriter("logs")主要用到两个方法:add_i......
  • Day17 - mini-Web框架
    1.web框架概述web框架和web服务器的关系介绍前面已经学习过web服务器,我们知道web服务器主要是接收用户的http请求,根据用户的请求返回不同的资源数据,但是之前我们开......
  • Coolify系列-手把手教学解决局域网局域网中的其他主机访问虚拟机以及docker服务
    背景我在windows电脑安装了一个VM,使用VM开启了Linux服务器,运行docker,下载服务镜像,然后运行服务,然后遇到了主机无法访问服务的问题。问题排查STEP1:首先要开启防火墙端......
  • 力扣每一一题2023.1.26---1663. 具有给定数值的最小字符串
    小写字符的数值是它在字母表中的位置(从1开始),因此a的数值为1,b的数值为2,c的数值为3,以此类推。字符串由若干小写字符组成,字符串的数值为各字符的数值之和。例......
  • 2019-2020各省省选选解
    没写题解不意味着没做,有的忘了写或者太草率了就算了。部分前言删了。2020联合省选希望题解链接。ZJOI抽卡题解有趣的题目。后面的部分不翻某混凝土数学真做不来......
  • Day16 -闭包和装饰器
    1.闭包介绍和基本语法1.函数产生嵌套(外函数中定义一个内函数)2.内函数使用外函数定的局部变量3.外函数返回内函数的引用(函数名)闭包的介绍我们前面已经学过了......
  • 力扣 871. 最低加油次数 [堆]
    871.最低加油次数汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 stati......
  • 【TPAMI2023】Global Learnable Attention for Single Image Super-Resolution
    【TPAMI2023】GlobalLearnableAttentionforSingleImageSuper-Resolution代码:https://github.com/laoyangui/DLSN这是来自福州大学的工作,提出一个有意思的观点:当前......
  • C语言--简单的爱心代码
    新手都能敲出来的爱心代码#include<stdio.h>#include<stdlib.h>//#include<string.h>intmain(){floatx,y,a;for(y=1.5;y>-1.5;y-=0.1){for(x=-1......