forked from gouthampradhan/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathValidWordAbbreviation.java
More file actions
73 lines (70 loc) · 2.38 KB
/
ValidWordAbbreviation.java
File metadata and controls
73 lines (70 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package string;
/**
* Created by gouthamvidyapradhan on 20/03/2019
* 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.
*/
public class ValidWordAbbreviation {
/**
* Main method
* @param args
*/
public static void main(String[] args) {
System.out.println(new ValidWordAbbreviation().validWordAbbreviation("abbreviation", "a10n"));
}
public boolean validWordAbbreviation(String word, String abbr) {
if(abbr.length() > word.length()) return false;
StringBuilder num = new StringBuilder();
int j = 0;
for(int i = 0; i < abbr.length() && j < word.length(); i ++){
char curr = abbr.charAt(i);
if(curr == '0' && num.toString().isEmpty()) return false;
if(curr >= '0' && curr <= '9'){
num.append(curr);
} else{
if(num.toString().isEmpty()){
if(word.charAt(j) != abbr.charAt(i)){
return false;
}
j++;
} else{
int next = Integer.parseInt(num.toString());
j += next;
if(word.length() <= j){
return false;
}
if(word.charAt(j) != abbr.charAt(i)){
return false;
}
num = new StringBuilder();
j++;
}
}
}
if(!num.toString().isEmpty()){
int next = Integer.parseInt(num.toString());
j += next;
if(j > word.length() || j < word.length()){
return false;
}
}
return true;
}
}