(Medium) Shifting Letters - LeetCode
作者:互联网
Description:
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.
Example 1:
Input: S = "abc", shifts = [3,5,9] Output: "rpl" Explanation: We start with "abc". After shifting the first 1 letters of S by 3, we have "dbc". After shifting the first 2 letters of S by 5, we have "igc". After shifting the first 3 letters of S by 9, we have "rpl", the answer.
Note:
1 <= S.length = shifts.length <= 20000
0 <= shifts[i] <= 10 ^ 9
Solution:
class Solution { public String shiftingLetters(String S, int[] shifts) { if(S==null||S.length()==0){ return null; } if(shifts==null||shifts.length==0){ return S; } String res= ""; for(int i = 0; i< shifts.length; i++){ long times = GetTimes(shifts, i); res = res + Shift(S.charAt(i),times); } String sub = S.substring(shifts.length, S.length()); // System.out.println(Shift('m',505870226%26)); return res; } //97 to 122 static long GetTimes(int[] arr, int k ){ long sum = 0; for (int i = k; i<arr.length; i++){ sum = sum + arr[i]; } return sum ; } static Character Shift(char a,long k ){ char tmp = a; k = k%26; while (k >0){ if(tmp =='z'){ tmp = 'a'; } else{ tmp= (char) ((int)tmp+1); } k=k-1; } return tmp; } }
标签:tmp,Medium,Letters,int,shift,shifts,length,Shifting,letters 来源: https://www.cnblogs.com/codingyangmao/p/11452579.html