用 C++ 中移動字母
假設我們有一個小寫字母字串 S 和一個整陣列 shifts。字母的移動表示字母表中的下一個字母,對於 z,它將是 a。現在對於每個 shifts[i] = x,我們希望將 S 的前 i+1 個字母移動 x 次。我們必須在對 S 應用所有此類移位後找到最終字串。因此,如果字串為 “abc” 且 shifts = [3,5,9],則將 S 的第一個字母移動 3 次後,將獲得 “dbc”,將 S 的前兩個字母移動 5 次後,我們得到 “igc”,並移動 S 的前三個字母移動 9 次後,我們得到 “rpl”,這就是答案。
為解決此問題,我們將遵循以下步驟 −
- 對於 i 在 shifts 陣列大小-2 到 0 範圍內
- shift[i] := shift[i] + shift[i + 1]
- shift[i] := shift[i] mod 26
- 對於 i 在 0 到 S 的大小-1 範圍內
- S[i] := ((S[i] – ASCII 的 a) + shifts[i] mod 26) + ASCII 的 a
- 返回 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP