机械手从索引 i 移动到索引 j 所需要的时间是 |i - j|。
当前测试需要你使用机械手输出指定的单词 word,请你编写一个函数来计算机械手输出该单词所需的时间。
示例 1:
输入:keyboard = “abcdefghijklmnopqrstuvwxyz”, word = “cba”
输出:4
解释:
机械手从 0 号键移动到 2 号键来输出 ‘c’,又移动到 1 号键来输出 ‘b’,接着移动到 0 号键来输出 ‘a’。
总用时 = 2 + 1 + 1 = 4.
示例 2:
输入:keyboard = “pqrstuvwxyzabcdefghijklmno”, word = “leetcode”
输出:73
int calculateTime(char * keyboard, char * word){
int wl = strlen(word);
int kl = strlen(keyboard);
int sum = 0;
int flag = 0;
for(int i = 0 ; i < wl ; i++)
{
for(int j = 0 ; j < kl ; j++)
{
if(keyboard[j] == word[i])
{
if(j < flag)
{
sum += (flag -j);
}
else
{
sum += (j-flag);
}
flag = j;
}
}
}
return sum;
}
思路:如图所示,还挺简单。