1.8 Valid Word Abbreviation

Description

Given a non-empty string s and an abbreviation abbr, return whether the string matches with the given abbreviation.

A string such as "word" contains only the following valid abbreviations:

["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", "wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"] Notice that only the above abbreviations are valid abbreviations of the string "word". Any other string is not a valid abbreviation of "word".

Note: Assume s contains only lowercase letters and abbr contains only lowercase letters and digits.

Example 1: Given s = "internationalization", abbr = "i12iz4n":

Return true. Example 2: Given s = "apple", abbr = "a2e":

Return false.

Method

two pointers move from the start to end if they are not equal check the t if it is a digit and then jump to next pointer

Time and Space Complexity

o(n)

Code

public class Solution {

  public boolean validWordAbbreviation(String word, String abbr) {
       if (word == null || abbr == null){
           return word == abbr;
       }
       int i = 0;
       int j = 0;
       while (i < word.length() && j < abbr.length()){
              if (word.charAt(i) == abbr.charAt(j)){
                  i++;
                  j++;
              } else if (abbr.charAt(j) > '0' && abbr.charAt(j) <= '9'){
                  int k = j + 1;
                  while (k < abbr.length() && Character.isDigit(abbr.charAt(k))){
                      k++;
                  }
                  int len = Integer.parseInt(abbr.substring(j, k));
                  j = k;
                  i = i + len;
              } else {
                  return false;
              }
       }
       if (i == word.length() && j == abbr.length()){
           return true;
       }
       return false;
}

}

results matching ""

    No results matching ""