题目:

有一个由小写字母组成的字符串 S,和一个整数数组 shifts。

我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的, 'z' 将会变成 'a')。

例如:shift('a') = 'b', shift('t') = 'u', 以及 shift('z') = 'a'。

对于每个 shifts[i] = x , 我们会将 S 中的前 i+1 个字母移位 x 次。

返回将所有这些移位都应用到 S 后最终得到的字符串。

示例:

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

1 <= S.length = shifts.length <= 20000
0 <= shifts[i] <= 10 ^ 9

个人思路:

这道题首先可以先计算出每个字母的移位距离,可以发现第一位字母的移位距离是第一个距离到最后一个字母距离的和,第二位是第二个到最后一个的和,以此类推,所以我们可以从后遍历数组,让该位的距离加上上一位的距离(这里我们要注意累加可能超过int的最大值,所以应该将值对26取余),这样我们就得到了每个字母要移动的距离。然后遍历每个字母,计算每个字母相对‘a’的位置,然后相对值加上距离再对26取余,得到移动距离,然后加上‘a’的位置即可。

代码:

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

个人笔记:

字符串转为数组:S.toCharArray();

算法练习--字母移位相关推荐

  1. C语言字符串字母移位

    C语言字符串字母移位 如题 话不多说了,直接上代码 如题 功能是:把 s 字符串中的所有字母改写成该字母的下一个字母,字母 z 改写 成字母 a.要求大写字母仍为大写字母,小写字母仍为小写字母,其它字 ...

  2. LeetCode 848. 字母移位(前缀和+取模)

    文章目录 1. 题目 2. 解题 1. 题目 有一个由小写字母组成的字符串 S,和一个整数数组 shifts. 我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的, 'z' 将会变成 ' ...

  3. C练题笔记之:Leetcode-第 85 场双周赛---6158. 字母移位 II

    题目: 给你一个小写英文字母组成的字符串 s 和一个二维整数数组 shifts ,其中 shifts[i] = [starti, endi, directioni] .对于每个 i ,将 s 中从下标 ...

  4. 算法小白——字母排序

    最近没有事情做,想到刷些题做,于是看到了一道算法题: 一组随机排列的字母数组: 请编写一个时间复杂度为O(n)的算法,使得这些字母按照字母从小到大的顺序排列好. 字母区分大小写 相同字母,排序后小写排 ...

  5. 【笔试真题】python实现加密电报,字母移位,凯撒密码

    1.题目描述: 给定一个英文文件名,包含大写字母,小写字母.要求将所有的大写字母向后移一位,如'A'---'B','C'---'D'....'Z'---'A'依此类推,小写字母后移一位,形成闭环'a' ...

  6. C语言凯撒密码字母向后偏移三位,凯撒加密解密(java字母移位)

    1.设计思想:加密就是将字符数据转化为ASC码表中的数字,a-w之间通过加3之后再转化为字符型输出,x-z之间通过转化为ASC码表中的数字后减去23再转化为字符型输出.解密就是将字符数据转化为ASC码 ...

  7. 面试碰到这个算法:字母异位词分组

    题目:输入: ["eat", "tea", "tan", "ate", "nat", "b ...

  8. 算法之排序算法-shell排序(移位法)

    个人觉得移位法就是借希尔排序进行分组,插入排序进行排序 注释是上一篇的交换法. 而且这种移位排序的真的很快 package com.ebiz.sort;import java.text.SimpleD ...

  9. python字母移位_python字母移位,凯撒密码

    将字符串中的字符平移n位,就是凯撒密码.比如此处的后移两位,a变为c,z变为b,以此类推,只换字母其它字符不变. #!/usr/bin/python3 str=r"g fmnc wms bg ...

最新文章

  1. TRIZ发明问题解决理论——本质是分析问题中的矛盾,利用资源(时间空间物质能量功能信息等)来解决矛盾从而解决问题——抽象出来:问题是什么,为什么?...
  2. ActiveReports for .NET 3 破解
  3. 常见数据归一化的几种方法
  4. Windows 使用 Gogs 搭建 Git 服务器
  5. 自己动手写CPU(3)逻辑、移位操作与空指令
  6. dojo 官方翻译 dojo/json 版本1.10
  7. STL中vector小结
  8. CMD发现一个得到字符串长度的方法
  9. Java 开源报表制作
  10. python读取txt数据
  11. java 整合永中云预览模块
  12. 360安全桌面没有计算机了,360安全卫士桌面上的图标不见了怎么办
  13. c语言中short作用,详解C语言中整数(short,int,long)
  14. 弗洛伊德求最小简单环
  15. [230506] 2021年托福阅读真题第6篇|Water and Life on Mars|15:30~16:30|16:30~19:19
  16. 绕过磊科路由器登录密码
  17. 【IDEA】如何用IDEA测试接口
  18. 电动汽车智能充电桩的设计分析
  19. Kindeditor上传图片报错
  20. 解决linux 2.5G网卡驱动问题

热门文章

  1. 直播时代:对直播平台和主播的监管更严格
  2. 通过反射获取Spring定时器@Scheduled注解中fixedDelay时间
  3. Web3 的 10 大应用
  4. 【机器学习】自动编码器 - Autoencoder
  5. 美学心得(第二百五十集) 罗国正
  6. 为何我们要用 React 来写小程序 - Taro 诞生记
  7. 8个java 网络编程框架介绍
  8. [动态规划]Tak and Cards
  9. 人脸识别技术在商业领域和日常生活的应用以及面临的挑战
  10. CSS之伪元素 ::before