您当前的位置:首页 >> 头条 >  >> 
快资讯:Leetcode 2381. Shifting Letters II
来源: 哔哩哔哩      时间:2023-03-17 12:06:19

You are given a string sof lowercase English letters and a 2D integer array shiftswhere shifts[i] = [starti, endi, directioni]


(资料图片仅供参考)

For every i, shift the characters in sfrom the index startito the index endi

(inclusive) forward if directioni = 1

or shift the characters backward if directioni = 0.

Shifting a character forward means replacing it with the next letter in the alphabet

(wrapping around so that 'z'becomes 'a'). 

Similarly, shifting a character backward means replacing it with the previous letter in the alphabet (wrapping around so that 'a'becomes 'z').

Return the final string after all such shifts to sare applied.

Example 1:

Input: s = "abc", shifts = [[0,1,0],[1,2,1],[0,2,1]]

Output: "ace"

Explanation: Firstly, shift the characters from index 0 to index 1 backward. 

Now s = "zac".Secondly, shift the characters from index 1 to index 2 forward. 

Now s = "zbd".Finally, shift the characters from index 0 to index 2 forward. Now s = "ace".

Example 2:

Input: s = "dztz", shifts = [[0,0,0],[1,1,1]]

Output: "catz"

Explanation: Firstly, shift the characters from index 0 to index 0 backward. 

Now s = "cztz".Finally, shift the characters from index 1 to index 1 forward. 

Now s = "catz".

Constraints:

1 <= s.length, shifts.length <= 5 * 104

shifts[i].length == 3

0 <= starti <= endi < s.length

0 <= directioni <= 1

sconsists of lowercase English letters.

印象深刻的一道题啊,就是将更改from -to的位置记下来,向前则from++,to--(to--一直没想明白,--就是抵消前面++的次数),然后一个变量累加,类似于前缀和,然后去遍历,

中间出过一次问题,就是对数据%26之后还要加26再%26,就是避免溢出错误(还是别的负数的错误)我理解的是负数的错误。

Runtime: 10 ms, faster than 34.15% of Java online submissions for Shifting Letters II.

Memory Usage: 83.4 MB, less than 34.15% of Java online submissions for Shifting Letters II.

标签:

X 关闭

X 关闭