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;
}
}