Word Pattern

本文介绍了一种用于判断字符串是否遵循给定模式的算法实现。通过使用哈希映射,该算法能够有效地验证字符串中单词序列与给定字符模式之间的对应关系。文章提供了详细的Java代码示例,展示了如何处理模式匹配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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.

Notes:

  1. Both pattern and str contains only lowercase alphabetical letters.
  2. Both pattern and str do not have leading or trailing spaces.
  3. Each word in str is separated by a single space.
  4. Each letter in pattern must map to a word with length that is at least 1.

package test;
import java.util.HashMap;
import java.util.Map;
public class Solution {  
	public static void main(String[] args) {  
		String str = "dog cat cat dog";
        String pattern = "abba"; 
        //static 
        Solution s = new Solution();
        System.out.println(s.wordPattern(pattern, str));  
    }  
    
    public boolean wordPattern(String pattern, String str) {  
            String[] s = str.split(" ");  
            if(s.length!=pattern.length())  return false;  
            Map<Character,String> map = new HashMap<Character,String>();  
            for(int i=0;i<pattern.length();i++)  
            {  
            	//java.lang.String.charAt()方法返回指定索引处的char值。索引范围是从0到length()-1
                //containsKey,如果映射包含关键词,返回true
            	if(!map.containsKey(pattern.charAt(i)))  
                {  
            		//containsValue,如果映射包含值,返回true
                    if(map.containsValue(s[i]))  
                        return false;  
                    map.put(pattern.charAt(i),s[i]);  
                }  
                else  
                {  
                    if(!map.get(pattern.charAt(i)).equals(s[i]))  
                        return false;  
                }  
            }  
            return true;  
        }  
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值