才发现hashmap还有一个contains value function 但是由于他是把所有value都扫一遍 还不如存两个hashmap呢
public class Solution {
public boolean wordPattern(String pattern, String str) {
HashMap<String,String> map = new HashMap<String,String> ();
String[] strs = str.split ( " " );
if ( strs.length != pattern.length() ){
return false;
}
for ( int i = 0; i < strs.length; i ++ ){
if ( map.containsKey ( pattern.charAt( i ) + "" ) && !strs [ i ].equals( map.get ( pattern.charAt( i ) + "")))
return false;
else if ( !map.containsKey ( pattern.charAt( i ) + "" ) && map.containsValue ( strs[ i ] ))
return false;
map.put ( pattern.charAt( i ) + "", strs [ i ] );
}
return true;
}
}
两个map
public boolean wordPattern(String pattern, String str) {
String[] words = str.split(" ");
if (words.length != pattern.length())
return false;
Map index = new HashMap();
for (int i=0; i<words.length; ++i)
if (!Objects.equals(index.put(pattern.charAt(i), i),
index.put(words[i], i)))
return false;
return true;
}
put函数是有返回值的 可以巧妙利用 返回的是被覆盖的那个entry的value 或者返回null 即原来里面不存在