刷題紀錄 leetcode-3106
解題程式 題目連結 我的想法是,既然他說,要有 cyclic 這個字眼了所以我當然需要判斷哪個距離比較小 minimum distance 題目也有說到,所以我就要把 abs(s[i] - newchar)、26 - abs(s[i] - newchar)兩個方向的距離都算出來,在判斷有沒有 小於等於,然後就把 k 每次更新就是把 k-=dist,並且把 t 也更新,最後...
解題程式
-
我的想法是,既然他說,要有
cyclic這個字眼了所以我當然需要判斷哪個距離比較小minimum distance題目也有說到,所以我就要把abs(s[i] - new_char)、26 - abs(s[i] - new_char)兩個方向的距離都算出來,在判斷有沒有小於等於,然後就把k每次更新就是把k-=dist,並且把t也更新,最後回傳t就好了。
<!–more–>
-
code
class 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; } };