From db571bd895e46dce7fb7b4d707dd71719e795060 Mon Sep 17 00:00:00 2001 From: jerryfishcode <91447694+jerryfishcode@users.noreply.github.com> Date: Mon, 27 Sep 2021 18:35:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0925.=E9=95=BF=E9=94=AE?= =?UTF-8?q?=E6=8C=89=E5=85=A5=20JavaScript=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0925.长按键入.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/problems/0925.长按键入.md b/problems/0925.长按键入.md index 70597508..02dca305 100644 --- a/problems/0925.长按键入.md +++ b/problems/0925.长按键入.md @@ -182,6 +182,34 @@ func isLongPressedName(name string, typed string) bool { ``` JavaScript: +```javascript +var isLongPressedName = function(name, typed) { + let i = 0, j = 0; + const m = name.length, n = typed.length; + while(i < m && j < n){ + if(name[i] === typed[j]){ // 相同则同时向后匹配 + i++; j++; + } else { + if(j === 0) return false; // 如果是第一位就不相同直接返回false + // 判断边界为n-1,若为n会越界,例如name:"kikcxmvzi" typed:"kiikcxxmmvvzzz" + while(j < n - 1 && typed[j] === typed[j-1]) j++; + if(name[i] === typed[j]){ // j跨越重复项之后再次和name[i]匹配,相同则同时向后匹配 + i++; j++; + } else { + return false; + } + } + } + // 说明name没有匹配完 例如 name:"pyplrzzzzdsfa" type:"ppyypllr" + if(i < m) return false; + // 说明type没有匹配完 例如 name:"alex" type:"alexxrrrrssda" + while(j < n) { + if(typed[j] === typed[j-1]) j++; + else return false; + } + return true; +}; +``` ----------------------- * 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)