C ++代码查找表盘旋转次数以打印字符串

假设,我们有一个包含所有小写英文字母的旋转拨号盘。表盘上有一个打印机,无论哪个字符在旋转表盘的指针上停留 3 秒,都会被打印出来。旋转拨盘最初停留在字母“a”处,并且在打印字符时不会重置到初始位置。我们得到一个字符串 s,我们必须打印给定的字符串。每当我们将表盘移动到另一个字母时,就会发生一次旋转。我们必须找出打印给定字符串's'所需的总旋转量。

因此,如果输入类似于 s = "elephant",则输出将为 63。

脚步

为了解决这个问题,我们将遵循以下步骤 -

t := 'a'

res := 0

for initialize i := 0, when i < size of s, update (increase i by 1),

do:

   res := res + minimum of (|t - s[i]|, 26 - |t - s[i]|)

   t := s[i]

return res

示例

让我们看看以下实现以更好地理解 -

#include <bits/stdc++.h>

using namespace std;

#define N 100

int solve(string s) {

   char t = 'a';

   int res = 0;

   for(int i = 0; i < s.size(); i++){

      res += min(abs(t - s[i]), 26 - abs(t - s[i]));

      t = s[i];

   }

   return res;

}

int main() {

   string s = "elephant";

   cout<< solve(s);

   return 0;

}

输入

"elephant"
输出结果
63

以上是 C ++代码查找表盘旋转次数以打印字符串 的全部内容, 来源链接: utcz.com/z/297390.html

回到顶部