本文共 2007 字,大约阅读时间需要 6 分钟。
知识点:快慢指针、模拟
时间:2020年10月21日 题目链接:题目
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。
示例 1:
输入:name = “alex”, typed = “aaleex” 输出:true 解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。示例 2:
输入:name = “saeed”, typed = “ssaaedd” 输出:false 解释:‘e’ 一定需要被键入两次,但在 typed 的输出中不是这样。示例 3:
输入:name = “leelee”, typed = “lleeelee” 输出:true示例 4:
输入:name = “laiden”, typed = “laiden” 输出:true 解释:长按名字中的字符并不是必要的。提示:
解法
方法一: 拿name去匹配typed
方法二:拿typed匹配name
代码
#include#include #include using namespace std;/*class Solution {public: bool isLongPressedName(string name, string typed) { int x = 0,y = 0; while(x != name.size()){ if(name[x] == name[x+1]){ if(name[x] == typed[y]){ x++;y++; }else{ return false; } } else{ int falg = 0;//标记是否匹配过 while(name[x]==typed[y]){ falg = 1; y++; } if(falg == 0)return false; x++; } } if(y!=typed.size())return false; else return true; }};/ */class Solution{ public: bool isLongPressedName(string name, string typed) { int x = 0,y = 0; while(y < typed.size()){ if(x < name.size() && name[x]==typed[y]){ x++;y++; }else if(y>0 && typed[y]==typed[y-1]){ y++; }else{ return false; } } if(x!=name.size())return false; else return true; }};int main(){ string name{ "alex"}; string typed{ "aaleex"}; Solution s; cout<
今天也是爱zz的一天哦!
转载地址:http://pmdsn.baihongyu.com/