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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP