leetcode:290. 单词模式(java实现,两种详细解法,也比较好理解)

在这里插入图片描述在这里插入图片描述

class Solution {
    public boolean wordPattern(String pattern, String str) {
    	  if(pattern==null||str==null) {
    		  return false;
    	  }
    	  String[] newstr=str.split(" ");//去空格
    	  if(newstr.length!=pattern.length()) {
    		  return false;
    	  }
        //解法一
    	  Set<Character> setchar=new HashSet<>();
    	  Set<String> setstr=new HashSet<>();
    			  for(int i=0;i<newstr.length;i++) {
    		  setchar.add(pattern.charAt(i));
    		  setstr.add(newstr[i]);
    	  }
    		 if(setchar.size()!=setstr.size()) {
    			return false;
    		}
    		 //设置pat到str的map映射
    		 Map<Character, String> map=new HashMap<>();
    	for(int i=0;i<newstr.length;i++) {
    		//解法一
    		if(!map.containsKey(pattern.charAt(i))) {
    			map.put(pattern.charAt(i), newstr[i]);
    		}else {
    			if(!map.get(pattern.charAt(i)).equals(newstr[i])) {
    				return false;
    			}
    		}
    		//解法二
            /*
    		if(!map.containsKey(pattern.charAt(i))){//不存在
    			if(!map.containsValue(newstr[i])) {
    				map.put(pattern.charAt(i), newstr[i]);
    			}else {
    				return false;
    			}	
    		}else {//存在
    			if(!map.get(pattern.charAt(i)).equals(newstr[i])) {
    				return false;
    			}
    		}*/
    	}
		return true;
      }
}

猜你喜欢

转载自blog.csdn.net/qq_42405666/article/details/89505402
今日推荐