LeetCode

it2024-06-24  41

题目链接

https://leetcode-cn.com/problems/long-pressed-name/

解题思路

显然,字符串typed中的每个字符,只有两种可能

作为name的一部分,此时会匹配name中的一个字符作为长按键入的一部分。此时它应与前一个字符相同

如果typed中存在一个字符,它两个条件均不满足,则应当直接返回false;否则,当typed扫面完毕后,我们再检查name的每个字符是否都被匹配了

当name[i] = typed[j]时,说明两个字符串存在一对匹配的字符,此时将i,j都加1

否则,如果typed[j] = typed[j - 1],说明存在一次长安键入,此时只将j 加1

最后,如果i == name.length,说明name的每个字符都被匹配了

AC代码

class Solution { public boolean isLongPressedName(String name, String typed) { int i = 0; int j = 0; while (j < typed.length()) { if (i < name.length() && name.charAt(i) == typed.charAt(j)) { i++; j++; } else if (j > 0 && typed.charAt(j) == typed.charAt(j - 1)) { j++; } else return false; } return i == name.length(); } }

本地测试代码

package com.company; public class Soluion_925 { public static boolean isLongPressedName(String name, String typed) { int i = 0; int j = 0; while (j < typed.length()) { if (i < name.length() && name.charAt(i) == typed.charAt(j)) { i++; j++; } else if (j > 0 && typed.charAt(j) == typed.charAt(j - 1)) { j++; } else return false; } return i == name.length(); } public static void main(String[] args) { System.out.println(isLongPressedName("alex", "aaleex")); System.out.println(isLongPressedName("saeed", "ssaaedd")); System.out.println(isLongPressedName("leelee", "lleeelee")); System.out.println(isLongPressedName("laiden", "laiden")); } }
最新回复(0)