刷題紀錄 leetcode-3106
解題程式
我的想法是,既然他說,要有
cyclic
這個字眼了所以我當然需要判斷哪個距離比較小minimum distance
題目也有說到,所以我就要把abs(s[i] - new_char)
、26 - abs(s[i] - new_char)
兩個方向的距離都算出來,在判斷有沒有小於等於
,然後就把k
每次更新就是把k-=dist
,並且把t
也更新,最後回傳t
就好了。
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19class Solution {
public:
string getSmallestString(string s, int k) {
string t = s;
int n = s.length();
for (int i = 0; i < n; i++) {
for (int j = 0; j < 26; j++) {
char new_char = 'a' + j;
int dist = min(abs(s[i] - new_char), 26 - abs(s[i] - new_char));
if (dist <= k) {
t[i] = new_char;
k -= dist;
break;
}
}
}
return t;
}
};