Leetcode in Java 848.Shifting Letters

英文题目:
We have a string S of lowercase letters, and an integer array shifts.
Call the shift of a letter, the next letter in the alphabet, (wrapping around so that 'z' becomes 'a').
For example, shift('a') = 'b', shift('t') = 'u', and shift('z') = 'a'.
Now for each shifts[i] = x, we want to shift the first i+1 letters of S, x times.
Return the final string after all such shifts to S are applied.
中文题目:
有一个由小写字母组成的字符串 S,和一个整数数组 shifts。
我们将字母表中的下一个字母称为原字母的 移位(由于字母表是环绕的, 'z' 将会变成 'a')。
例如·,shift('a') = 'b', shift('t') = 'u',, 以及 shift('z') = 'a'。
对于每个 shifts[i] = x , 我们会将 S 中的前 i+1 个字母移位 x 次。
返回将所有这些移位都应用到 S 后最终得到的字符串。


分析:

  • 题目定义了一个shift函数,将字母按照字母表的顺序转换成下一个字母;题目给了一个shift数组,shift[i]代表要对前i+1个字母作shift[i]次shift函数操作。
  • 根据题目要求,我们应该从后往前计算,即最后一位应该移动shift[len-1]次,倒数第二位移动shift[len-1]+shift[len-2]次。
  • 所以这道题是典型的使用后缀和解决的题目,但是根据题意0 <= shifts[i] <= 10 ^ 9,我们应该进行%26次操作。
  • 最后还要完成字符类型和整形之间的转换,时间复杂度为O(n)。

总结本题的考点在于:

  1. 后缀和
  2. 根据题意进行取模运算(考虑到溢出情况)
  3. 字符类型与整数类型的转换

class Solution {
    public String shiftingLetters(String S, int[] shifts) {
        char[] chars = S.toCharArray();
        int shift = 0;
        for (int i = shifts.length - 1; i >= 0; i--) {
            // 取模运算,防止溢出
            shift = (shift + shifts[i]) % 26;
            // 利用 int 进行 shift 计算,完成后转回 char 类型
            chars[i] = (char)((chars[i] - 'a' + shift) % 26 + 'a');
        }
        return String.valueOf(chars);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,047评论 0 2
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,182评论 0 2
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,215评论 0 13
  • 陪着老婆一起逛宜家,好久都没有买过家具了,这次还是拖儿子的福,又买了一次家具!准备搬到光谷去了! 9-14工作 1...
    浦大魔王76阅读 1,153评论 0 0
  • Apache的 Hadoop数据库, 是一个分布式的、 可扩展的、 支持大数据存储的数据库。 当需要对大数据进行随...
    金刚_30bf阅读 1,774评论 0 1

友情链接更多精彩内容