用C ++转换字母
假设我们有一个小写字母的字符串S,并且一个整数数组移位了。字母的移位表示字母表中的下一个字母,对于z,它将为a。现在,对于每个shift[i]=x,我们想将S的前i+1字母移位x次。在对S进行所有此类移位之后,我们必须找到最终的字符串。因此,如果字符串为“abc”且shifts=[3,5,9],则在将S的前一个字母移位3之后,将具有“dbc”,将S的前两个字母移位5,我们将获得“igc””,然后将S的前三个字母移9,我们得到“rpl”,这就是答案。
为了解决这个问题,我们将遵循以下步骤-
对于我在移位数组范围内的大小–2降至0
shift[i]:=shift[i]+shift[i+1]
shift[i]:=shift[i]mod26
对于范围从0到S–1的i
S[i]:=(((S[i]–a的ASCII)+shifts[i]mod26)+a的ASCII
返回S
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string shiftingLetters(string S, vector<int>& shifts) {
for(int i = shifts.size() - 2 ;i >=0; i--){
shifts[i] += shifts[i + 1];
shifts[i] %= 26;
}
for(int i = 0; i < S.size(); i++) {
S[i] = ( ((S[i] - 'a') + shifts[i]) % 26 + 'a');
}
return S;
}
};
main(){
vector<int> v = {3,5,9};
Solution ob;
cout << (ob.shiftingLetters("abc", v));
}输入项
"abc" [3,5,9]
输出结果
rpl