本題為12月15日力扣每日一題
題目來源:力扣第1945題
題目tag:模擬
題面
題目描述
給你一個由小寫字母組成的字串s,以及一個整數k,
首先,用字母在字母表中的位置替換該字母,將s轉化為一個整數(也就是,'a' 用1替換,'b'用2替換,...'z'用26替換),接著,將整數轉換為其各位數字之和,共重復轉換操作k次,
例如,如果s="zbax"且k=2,那么執行下述步驟后得到的結果是整數8:
轉化:"zbax" ? "(26)(2)(1)(24)" ? "262124" ? 262124
轉換 #1:262124 ? 2 + 6 + 2 + 1 + 2 + 4 ? 17
轉換 #2:17 ? 1 + 7 ? 8
回傳執行上述操作后得到的結果整數,
示例
示例 1
輸入:
s = "iiii", k = 1
輸出:
36
解釋:
操作如下:
- 轉化:"iiii" ? "(9)(9)(9)(9)" ? "9999" ? 9999
- 轉換 #1:9999 ? 9 + 9 + 9 + 9 ? 36
因此,結果整數為36,
示例 2
輸入:
s = "leetcode", k = 2
輸出:
6
解釋:
操作如下:
- 轉化:"leetcode" ? "(12)(5)(5)(20)(3)(15)(4)(5)" ? "12552031545" ? 12552031545
- 轉換 #1:12552031545 ? 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ? 33
- 轉換 #2:33 ? 3 + 3 ? 6
因此,結果整數為6,
提示
1 <= s.length <= 100
1 <= k <= 10
s 由小寫英文字母組成
思路分析
按照題目來模擬即可.注意部分語言的字串是不可變的,所以需要謹慎使用字串拼接操作.
參考代碼
class Solution
{
public:
int getLucky(string s, int k)
{
string temp;
for (auto c : s)
{
temp += to_string(c - 'a' + 1);
}
long long sum = 0;
for (int i = 0; i < k; i++)
{
sum = 0;
for (auto c : temp)
{
sum += c - '0';
}
temp = to_string(sum);
}
return sum;
}
};
"正是我們每天反復做的事情,最終造就了我們,優秀不是一種行為,而是一種習慣" ---亞里士多德
這里是浙江理工大學22屆ACM集訓隊的成員一枚鴨!
本文首發于博客園,作者:星雙子,除了我自己的轉載請注明原文鏈接:https://www.cnblogs.com/geministar/p/LeetCode1945.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/540029.html
標籤:其他
上一篇:三無選手上岸大廠的后端校招經驗
