Leetcode2381. 字母移位 II

Every day a Leetcode

题目来源:2381. 字母移位 II

解法1:差分数组

用差分数组 diff 表示一段区间上的更新,即在 starti 变化量增加了 x,在 endi+1 变化量减少了 x(类比导数的概念)。

这里 x=2*directioni−1,把 0 和 1 变成 −1 和 1。

然后从小到大遍历 diff,累加变化量为 shift(类比积分的概念),这样对于第 i 个字符,其移位值就是 shift。

注意:

在这里插入图片描述

代码:

/*
 * @lc app=leetcode.cn id=2381 lang=cpp
 *
 * [2381] 字母移位 II
 */

// @lc code=start
class Solution
{
   
public:
    string shiftingLetters(string s, vector<vector<int>> &shifts)
    {
   
        // 特判
        if (shifts.empty())
            return s;

        int n = s.length();
        // 构造差分数组
        vector<int> diff(n + 1, 0);
        for (vector<int> &shift : shifts)
        {
   
            int start = shift[0];
            int end = shift[1];
            int move = shift[2] ? 1 : -1;
            diff[start] += move;
            diff[end + 1] -= move;
        }

        int shift = 0;
        // 计算最终字符串
        for (int i = 0; i < n; i++)
        {
   
            shift += diff[i];
            s[i] = (char)((s[i] - 'a' + (shift % 26) + 26) % 26 + 'a');
        }
        return s;
    }
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n+m),其中 n 是字符串 s 的长度,m 是数组 shift 的元素个数。

空间复杂度:O(n),其中 n 是字符串 s 的长度。

相关推荐

  1. LeetCode231. Power of Two

    2024-01-31 16:36:02       35 阅读
  2. LeetCode2331. Evaluate Boolean Binary Tree

    2024-01-31 16:36:02       9 阅读
  3. Leetcode | 231. 2 的幂 C语言

    2024-01-31 16:36:02       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 16:36:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 16:36:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 16:36:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 16:36:02       18 阅读

热门阅读

  1. PandaWallet :Web3.0世界的入口

    2024-01-31 16:36:02       32 阅读
  2. pg数据库替换指定ip

    2024-01-31 16:36:02       34 阅读
  3. Android Studio六大基本布局详解

    2024-01-31 16:36:02       28 阅读
  4. 内容运营常用的ChatGPT通用提示词模板

    2024-01-31 16:36:02       29 阅读
  5. 【C语言】(8)宏定义

    2024-01-31 16:36:02       33 阅读
  6. 第十二章 软件工程(上午题)

    2024-01-31 16:36:02       25 阅读
  7. IO

    2024-01-31 16:36:02       31 阅读