leetcode记录:难度简单:925. Long Pressed Name(多写的名字)

题目出处:https://leetcode.com/problems/long-pressed-name/

题目描述:

你的朋友正在键盘上输入他的名字。有时,在键入字符c时,可能长时间按下该键,该字符将被键入1次或更多次。

检查键盘输入的字符。如果可能是您的朋友的名字,并且长时间按下某些字符(可能没有),则返回True。

Example 1:

Input: name = "alex", typed = "aaleex"
Output: true
Explanation: 'a' and 'e' in 'alex' were long pressed.

Example 2: 

Input: name = "saeed", typed = "ssaaedd"
Output: false
Explanation: 'e' must have been pressed twice, but it wasn't in the typed output.

Example 3:

Input: name = "leelee", typed = "lleeelee"
Output: true

Example 4: 

Input: name = "laiden", typed = "laiden"
Output: true
Explanation: It's not necessary to long press any character.

思路:

我自己做了好几次,发现每次自己的思路总是有问题。

第一次:对typed的按顺序去重后与name对比。因为name是标准嘛,typed一定是多写了某些字符,按顺序去除就可以达到目的,结果:name:'leelee' typed:’lele‘,当typed本身就是少写的时候就会出错,因为我根本没考虑。

第二次:我看了solution的approtch 1。记录分块,然后记录每块的数字的次数,再name和typed进行对比。例如,“aaleex”是一个多写了的“alex”:因为当你考虑组织[(' a ',2),(' l ',1),(‘e’,2),(' x ',1)]和[(' a ',1),(' l ',1),(' e ',1),(' x ',1)),他们都有key “alex”和计数(2,1,2,1),(1,1,1,1),再在进行中的元素比较(2 > = 1,1 > = 1,2 > = 1,1 > = 1)。分块,再计算,再比较,麻烦,

最后:就一位一位的比好了,

var isLongPressedName4 = function(name, typed) {
    //循环遍历对比name和typed的每一位,
    for(let i =0,j=0;j<typed.length;j++){
        //相同就最好了,继续对比下一位
        if(i<name.length&&name[i]==typed[j]){
            i++;
            //不同,就与上一位对比,与上一位相同,就是多写了,继续
        }else if(typed[j] == typed[j-1]&& j>0){
            continue
            
            //与上一位不同,就不属于多写,就类似于name:leelee,tped:lelee
        }else {
            return false
        }
    }
    
    //最后汇总对比
    if(i==name.length){
        return true
    }else {
        return false
    }
};

 

 

算法看起啦就很正规化,相比这个虽然解决了问题还很容易理解,但是能不能算一种算法。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值