0
点赞
收藏
分享

微信扫一扫

LeetCode每日一题1629

快乐小码农 2022-01-09 阅读 154

LeetCode每日一题1629

文章目录

题目描述

题目详情如下:题目详情链接
在这里插入图片描述

提交记录:
很简单的题目

解答

1.个人解答:

其实看到这个东西的时候感觉还挺好弄的,也没有技巧,就是维护一个长度为26的用来存储每个小写字母对应键的最大按压时间的数组pressTime就可以了。
在刷新的过程中,也不断刷新一个用来存储最大按压时间对应的字母的一个变量char result

  • 如果对于相同字母,碰到了按压时间更长的情况,则刷新pressTime数组中对应位置的数值
  • 如果该长度大于当前记录的最大长度,则更新变量result
  • 如果该长度等于当前记录的最大长度,如果对应的ASCII码更大,也更新变量result
  • 否则变量result不变
  • 重复上面的步骤,知道全部遍历完提供信息的数组releaseTimes

对应的代码如下:

class Solution {
public:
    char slowestKey(vector<int>& releaseTimes, string keysPressed) {
        int len = releaseTimes.size();
        int *pressTime = new int [26];
        for(int i = 0; i < 26; i++)
            pressTime[i] = 0;   // 初始化记录时间的数组
        char result = keysPressed[0];
        pressTime[result - 'a'] = releaseTimes[0];
        for(int i = 1; i < len; i++)
        {// 开始统计信息
            int tempPressTime = releaseTimes[i] - releaseTimes[i-1];    // 记录第i次按压的时间
            int tempChar = keysPressed[i];                              // 第i次按压是什么键
            pressTime[tempChar - 'a'] = max(tempPressTime, pressTime[tempChar - 'a']);
            if(pressTime[tempChar - 'a'] > pressTime[result - 'a']){
                result = tempChar;
            }
            if(pressTime[tempChar - 'a'] == pressTime[result - 'a']){
                // 出现按压次数相同的情况
                if(tempChar >= result){
                    result = tempChar;
                }
            }
        }
        return result;
    }
};

2.参考解答

简单模拟题,没啥好看的。。。

举报

相关推荐

0 条评论