-
-
Notifications
You must be signed in to change notification settings - Fork 299
/
290.java
74 lines (73 loc) · 2.43 KB
/
290.java
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
74
__________________________________________________________________________________________________
sample 0 ms submission
class Solution {
public boolean wordPattern(String pattern, String str) {
String[] match=new String[26];
int[] matchNum=new int[26];
for(int i=0;i<26;i++)
matchNum[i]=0;
int len1=pattern.length(),len2=str.length();
int k=0;
for(int i=0;i<len1;i++)
{
char ch=pattern.charAt(i);
int j=(int)(ch-'a');
StringBuffer s = new StringBuffer();
while(k<len2&&str.charAt(k)!=' ')
{
s.append(str.charAt(k));
k++;
}
k++;
String word=s.toString();
if(matchNum[j]==0)
{
for(int y=0;y<26;y++)
if(matchNum[y]==1&&word.equals(match[y]))
return false;
match[j]=word;
matchNum[j]=1;
}
else
{
if(!match[j].equals(word))
return false;
}
}
if(k-1==len2)
return true;
else
return false;
}
}
__________________________________________________________________________________________________
sample 32664 kb submission
class Solution {
public boolean wordPattern(String pattern, String str) {
String[] words = str.split(" ");
// store char in pattern with matching word
Map<Character, String> map = new HashMap<>();
if (pattern.length() != words.length)
return false;
for (int i = 0; i < words.length; i++)
{
char curr = pattern.charAt(i);
if (map.containsKey(curr))
{
// check if word for this char equals the current word
if (!map.get(curr).equals(words[i]))
return false;
}
else
{
// if word already exists, then return false since it shouldn't be in map yet
if (map.containsValue(words[i]))
return false;
// put char with current word into map
map.put(curr, words[i]);
}
}
return true;
}
}
__________________________________________________________________________________________________