题目描述
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
示例
思路
通过创建两个HashMap
Map<Character,String> map=new HashMap();
Map<String,Character> map1=new HashMap();
去循环一个初始的字符数组,比较两个Hashmap的value来判断他们是不是符合要求
代码
public static boolean wordPattern(String pattern, String s) {
String[] ss=new String[pattern.length()];
//将字符串分割成字符数组
ss=s.split(String.valueOf(' '));
Map<Character,String> map=new HashMap();
Map<String,Character> map1=new HashMap();
if(pattern.length()!=ss.length){
return false;
}
// 给两个map赋值
for(int i=0;i<pattern.length();i++){
map.put(pattern.charAt(i),ss[i]);
map1.put(ss[i],pattern.charAt(i));
}
//判断是否满足条件
for(int i=0;i<pattern.length()-1;i++){
if(ss[i].equals(map.get(pattern.charAt(i)))&&pattern.charAt(i)==map1.get(ss[i])){
continue;
}
return false;
}
return true;
}
复杂度
时间复杂度:O(n + m)O(n+m)
空间复杂度:O(n + m)O(n+m)