java: add «2381. Shifting Letters II»
URL: https://leetcode.com/problems/shifting-letters-ii/ Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
1183f0e046
commit
0c8d6c1b2d
1 changed files with 38 additions and 0 deletions
38
java/shifting-letters-ii.java
Normal file
38
java/shifting-letters-ii.java
Normal file
|
@ -0,0 +1,38 @@
|
|||
class Solution {
|
||||
public String shiftingLetters(String s, int[][] shifts) {
|
||||
var diff = new int[s.length()];
|
||||
for (var shift : shifts) {
|
||||
var start = shift[0];
|
||||
var end = shift[1];
|
||||
|
||||
if (shift[2] == 0) {
|
||||
--diff[start];
|
||||
|
||||
if (end + 1 < s.length()) {
|
||||
++diff[end + 1];
|
||||
}
|
||||
} else if (shift[2] == 1) {
|
||||
++diff[start];
|
||||
|
||||
if (end + 1 < s.length()) {
|
||||
--diff[end + 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var result = new StringBuilder(s);
|
||||
|
||||
var shiftBy = 0;
|
||||
for (var i = 0; i < s.length(); ++i) {
|
||||
shiftBy = (shiftBy + diff[i]) % 26;
|
||||
if (shiftBy < 0) {
|
||||
shiftBy += 26;
|
||||
}
|
||||
|
||||
var shifted = (char) ('a' + ((s.charAt(i) - 'a' + shiftBy) % 26));
|
||||
result.setCharAt(i, shifted);
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue