Leetcode 290. Word Pattern

Leetcode  290. Word Pattern 

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Examples:

  1. pattern = "abba", str = "dog cat cat dog" should return true.
  2. pattern = "abba", str = "dog cat cat fish" should return false.
  3. pattern = "aaaa", str = "dog cat cat dog" should return false.
  4. pattern = "abba", str = "dog dog dog dog" should return false.
<pre name="code" class="java"> public boolean wordPattern(String pattern, String str) {
	   boolean flag = false;
	   int length1 = pattern.length();
	   String[] str1 = str.split(" ");
	   int length2 = str1.length;
	   int count = 0;
	   HashMap map1 = new HashMap();
	   HashMap map2 = new HashMap();
	   int[] array1= new int[length1];
	   int[] array2= new int[length2];
	
	   if(length1 != length2)
		   flag = false;
	   else{
		   
		   for(int i = 0; i < length1; i++){
			   if(map1.containsKey(String.valueOf(pattern.charAt(i)))){
				  array1[i] = map1.get(String.valueOf(pattern.charAt(i)));
			   }
			   else{
				   map1.put(String.valueOf(pattern.charAt(i)), i);
				   array1[i] = i;
			   }
			   
			   if(map2.containsKey(str1[i])){
				   array2[i] = map2.get(str1[i]);
			   }
			   else{
				   map2.put(str1[i], i);
				   array2[i] = i;
			   }
		   } 
		   
		   for(int i = 0; i < length1; i++){
			   if(array1[i] == array2[i]){
				   count ++;
			   }
		   }
		   if(count == length1){
			   flag = true;
		   }
	   }  
	   return flag;
   }


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值