有一个特殊打字机,它由一个 圆盘 和一个 指针 组成, 圆盘上标有小写英文字母 'a'
到 'z'
。只有 当指针指向某个字母时,它才能被键入。指针 初始时 指向字符 'a'
。
每一秒钟,你可以执行以下操作之一:
- 将指针 顺时针 或者 逆时针 移动一个字符。
- 键入指针 当前 指向的字符。
给你一个字符串 word
,请你返回键入 word
所表示单词的 最少 秒数 。
示例 1:
输入:word = "abc" 输出:5 解释: 单词按如下操作键入: - 花 1 秒键入字符 'a' in 1 ,因为指针初始指向 'a' ,故不需移动指针。 - 花 1 秒将指针顺时针移到 'b' 。 - 花 1 秒键入字符 'b' 。 - 花 1 秒将指针顺时针移到 'c' 。 - 花 1 秒键入字符 'c' 。
class Solution {
public int minTimeToType(String word) {
int num = 0;
int a = 97;
int x1, x2;
for (int i = 0; i < word.length(); i++) {
x1 = Math.abs(word.charAt(i) - a);//正向步数
if (a > word.charAt(i)) x2 = Math.abs(word.charAt(i) + 26 - a);
else x2 = Math.abs(a + 26 - word.charAt(i));//反向步数
num += Math.min(x1, x2);
a = word.charAt(i);
}
return num + word.length();
}
}