难度:简单
题目描述:
解法:动画可参见吴师兄GitHub
想到用HashMap存储键值对,初始化HashMap<Character, String> map = new HashMap<>() , map.put(key, value), map.get(key)。还用到了一个集合。
字符串的方法:
将空格隔开的字符串变成对应数组。String[] array=str.split("");
String得到对应的char用charAt方法。char key=pattern.charAt(i);
java的true和false都小写。
java里面字符串要用双引号,不是单引号。
遍历String的方法:for (int i=0;i<pattern.length();i++)。
public boolean wordPattern(String pattern, String str){
HashMap<Character, String> map = new HashMap<>();
Set<String> set = new HashSet<>();
String[] arr = str.split(" ");
if (pattern.length() != arr.length) {
return false;
}
for (int i=0;i<pattern.length();i++) {
char key = pattern.charAt(i);
if (!map.containsKey(key)) {
if (set.contains(arr[i]))
return false;
map.put(key, arr[i]);
set.add(arr[i]);
}else {
if (map.get(key) != arr[i]) {
return false;
}
}
}
return true;
}
用一个HashSet是为了防止不同的char对应相同的单词这种不对的情况出现。每次出现新的pattern的时候,把对应的单词放到set里面,如果有新的pattern但是set出现过对应的单词,那就false。