zoukankan      html  css  js  c++  java
  • leetcode面试准备: Word Pattern

    leetcode面试准备: Word Pattern

    1 题目

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

    Examples:

    pattern = "abba", str = "dog cat cat dog" should return true.
    pattern = "abba", str = "dog cat cat fish" should return false.
    pattern = "aaaa", str = "dog cat cat dog" should return false.
    pattern = "abba", str = "dog dog dog dog" should return false.
    

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

    接口: public boolean wordPattern(String pattern, String str)

    2 思路

    题意

    通过pattern来匹配单词,很容易想到HashMap思想。

    注意

    1. pattern的长度,不对应str拆分单词后的长度。
    2. 一个pattern字母和唯一一个字符串相互对应。

    复杂度: Time:O(n) Space: O(n)

    3 代码

    public boolean wordPattern(String pattern, String str) {
    		String[] words = str.split("\s", -1);
    		int len = words.length;
    		if (pattern.length() != len) { // 长度不等直接false,防止后面数组越界
    			return false;
    		}
    		Map<Character, String> map = new HashMap<>(26);
    		for (int i = 0; i < len; i++) {
    			Character c = pattern.charAt(i);
    			if (map.containsKey(c)) {
    				if (!map.get(c).equals(words[i]))
    					return false;
    			} else {
    				if (map.containsValue(words[i])) { // 字母和字符串一一对应。
    					return false;
    				}
    				map.put(c, words[i]);
    			}
    		}
    		return true;
    	}
    

    4 总结

    简单题,注意细节。一次AC。

    5 参考

    leetcode

  • 相关阅读:
    vue3.0中如何使用ueditor
    如何在vue+element中实现选择框和穿梭框的根据拼音以及拼音首字母以及汉字的模糊搜索
    select 使其默认选中文本不为空
    java环境配置
    amaze ui 滚动监听
    vue项目中如何使用less
    强大的css3库
    input type file兼容性
    select中想要加a链接 并且新窗口打开
    echarts绘制k线图为什么写candlestick类型就报错
  • 原文地址:https://www.cnblogs.com/byrhuangqiang/p/4858886.html
Copyright © 2011-2022 走看看