当前位置: 首页 > article >正文

【面试经典】单词规律

链接:290. 单词规律 - 力扣(LeetCode)

class Solution {
    public boolean wordPattern(String pattern, String s) {
        // 将字符串 s 按空格分割成单词数组
        String[] words = s.split(" ");
        
        // 定义两个映射:一个用于存储从单词到模式字符的映射
        Map<String, Character> wordToCharMap = new HashMap<>();
        
        // 另一个用于存储从模式字符到单词的映射
        Map<Character, String> charToWordMap = new HashMap<>();
        
        // 如果模式长度和单词数组长度不相等,则直接返回 false
        if (pattern.length() != words.length) {
            return false;
        }
        
        // 遍历模式和单词数组
        for (int i = 0; i < words.length; i++) {
            char c = pattern.charAt(i); // 获取当前模式字符
            String word = words[i];    // 获取当前单词
            
            // 检查当前模式字符是否已经存在于映射中
            if (charToWordMap.containsKey(c)) {
                // 如果存在,但对应的单词与当前单词不匹配,则返回 false
                if (!charToWordMap.get(c).equals(word)) {
                    return false;
                }
            } 
            // 检查当前单词是否已经存在于映射中
            else if (wordToCharMap.containsKey(word)) {
                // 如果存在,但对应的模式字符与当前字符不匹配,则返回 false
                if (!wordToCharMap.get(word).equals(c)) {
                    return false;
                }
            }
            
            // 如果都未发生冲突,则建立当前字符与单词的映射
            wordToCharMap.put(word, c);
            charToWordMap.put(c, word);
        }
        
        // 如果遍历结束未发现不匹配,则返回 true
        return true;
    }
}

http://www.kler.cn/a/503291.html

相关文章:

  • Zookeeper(3)Zookeeper的工作原理是什么?
  • 怎么理解编码器与解码器?
  • 【容器逃逸实践】挂载/dev方法
  • 《自动驾驶与机器人中的SLAM技术》ch9:自动驾驶车辆的离线地图构建
  • 大数据技术Kafka详解 ⑤ | Kafka中的CAP机制
  • Cookie和Session
  • 【Vue】点击侧边导航栏,右侧main对应显示
  • Keil C51 与 Keil MDK(ARM-stm32?):嵌入式开发的利器
  • 区块链技术在商贸物流中的变革性作用:透明、安全与高效
  • Vue2+OpenLayers实现折线绘制、起始点标记和轨迹打点的完整功能(提供Gitee源码)
  • Spring MVC简单数据绑定
  • 通过高效的侦察发现关键漏洞接管整个IT基础设施
  • MATLAB中rescale函数用法
  • 【Uniapp-Vue3】响应式单位rpx及搭配使用UI产品工具
  • 力扣56. 合并区间
  • API接口技术开发小红书笔记详情api采集笔记图片视频参数解析
  • 【STM32】HAL库USB实现软件升级DFU的功能操作及配置
  • 开发人员学习书籍推荐(C#、Python方向)
  • IDEA编译器集成Maven环境以及项目的创建(2)
  • centos修改/etc/resolv.conf 重启network后又恢复到原来的状态
  • 微服务之松耦合
  • 微信小程序:实现首页权限菜单效果
  • Java-数据结构-栈与队列(常考面试题与单调栈)
  • 自动化办公|xlwings简介
  • 在移动端开发图表,uniapp+echarts,需要特殊处理,使用renderjs
  • 思科 Java 开发人员面试记录 2024(Java、Spring-Boot、Hibernate)