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

Day50 单词规律

给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。

在这里插入图片描述

class Solution {
    public boolean wordPattern(String pattern, String s) {
        // 将字符串s按照空格拆分成单词数组
        String[] words = s.split(" ");
        // 如果模式的长度和单词数组的长度不相等,直接返回false
        if (pattern.length() != words.length) {
            return false;
        }
        // 创建两个哈希映射
        Map<Character, String> patternToWord = new HashMap<>();
        Map<String, Character> wordToPattern = new HashMap<>();
        // 遍历模式和单词数组
        for (int i = 0; i < pattern.length(); i++) {
            char patternChar = pattern.charAt(i);
            String word = words[i];
            // 如果模式字符没有对应的的单词,或者单词没有对应的模式字符,则说明不符合要求,返回false
            if (patternToWord.containsKey(patternChar) && !patternToWord.get(patternChar).equals(word)) {
                return false;
            }
            if (wordToPattern.containsKey(word) && wordToPattern.get(word) != patternChar) {
                return false;
            }
            // 设置双向映射
            patternToWord.put(patternChar, word);
            wordToPattern.put(word, patternChar);
        }
        // 如果没有冲突,返回true
        return true;
    }
}

时间复杂度是 O(n),其中 n 是字符串 s 中单词的数量,或者是模式 pattern 的长度。因为我们只遍历了一次字符串和模式。

空间复杂度是 O(n),因为我们使用了两个哈希映射来存储字符和单词的映射关系。

http://www.dtcms.com/a/99940.html

相关文章:

  • 小智机器人相关函数解析,BackgroundTask::Schedule (***)将一个回调函数添加到后台任务队列中等待执行
  • 多人协同进行qt应用程序开发应该注意什么?
  • ai画图flux redux图像文本双重引导生成。
  • Axios 相关的面试题
  • 注入工具SQLMAPTamper 编写指纹修改高权限操作目录架构
  • Nginx实现动静分离配置
  • JavaScript 网页开发设计案例:构建动态看板任务管理器 (Kanban Board)
  • 飞致云荣获“Alibaba Cloud Linux最佳AI镜像服务商”称号
  • GPT-4o 原生图像生成技术解析:从模型架构到吉卜力梦境的实现
  • 代码规范之空行思路和原则
  • python虚拟环境使用
  • 1500 字节 MTU | 溯源 / 技术权衡 / 应用影响
  • 代码随想录刷题day56|(回溯算法篇)46.全排列(非去重)、47.全排列 II(去重)
  • UE4学习笔记 FPS游戏制作32 主菜单,暂停游戏,显示鼠标指针
  • 学习threejs,使用Sprite精灵、SpriteMaterial精灵材质
  • 前端全局编程和模块化编程
  • [笔记.AI]大模型训练 与 向量值 的关系
  • vue3 + ant-design-vue4实现Select既可以当输入框也可以实现下拉选择
  • sqli-labs学习记录8
  • Spring 项目中跨数据源(多数据源)调用时 @DS 注解失效或不生效
  • Nginx RTMP 接收模块分析 (ngx_rtmp_receive.c)
  • 【数学建模】(智能优化算法)元胞自动机在数学建模中的应用
  • 第十四节 MATLAB决策制定、MATLAB if 语句语法
  • MATLAB 控制系统设计与仿真 - 30
  • Java简单生成pdf
  • 在Wincc中使用Dapper读写数据库
  • Go/Python(Nuitka)/Rust/Zig 技术对比
  • 记一次关于云的渗透过程
  • Git配置
  • C# 的Lambda表达式‌常见用法和示例