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

Java | Leetcode Java题解之第514题自由之路

题目:

题解:

class Solution {
    public int findRotateSteps(String ring, String key) {
        int n = ring.length(), m = key.length();
        List<Integer>[] pos = new List[26];
        for (int i = 0; i < 26; ++i) {
            pos[i] = new ArrayList<Integer>();
        }
        for (int i = 0; i < n; ++i) {
            pos[ring.charAt(i) - 'a'].add(i);
        }
        int[][] dp = new int[m][n];
        for (int i = 0; i < m; ++i) {
            Arrays.fill(dp[i], 0x3f3f3f);
        }
        for (int i : pos[key.charAt(0) - 'a']) {
            dp[0][i] = Math.min(i, n - i) + 1;
        }
        for (int i = 1; i < m; ++i) {
            for (int j : pos[key.charAt(i) - 'a']) {
                for (int k : pos[key.charAt(i - 1) - 'a']) {
                    dp[i][j] = Math.min(dp[i][j], dp[i - 1][k] + Math.min(Math.abs(j - k), n - Math.abs(j - k)) + 1);
                }
            }
        }
        return Arrays.stream(dp[m - 1]).min().getAsInt();
    }
}

http://www.kler.cn/news/367188.html

相关文章:

  • 从文化到实践:DevOps的基本概念与核心实践详解
  • RV1126音视频学习(二)-----VI模块
  • Linux系统安装Redis详细操作步骤(二进制发布包安装方式)
  • 前端项目接入sqlite轻量级数据库sql.js指南
  • Jenkins学习笔记
  • vue计算属性报错:Computed property “energyTotal“ was assigned to but it has no setter.
  • Java 集合框架是什么?集合框架的优点有哪些?
  • 【nGrinder】性能压测平台记录文档(2)
  • web3对象如何连接以太网络节点
  • python之数据结构与算法(数据结构篇)-- 集合
  • Redis 事务 总结
  • Docker 安装使用
  • 一文掌握异步web框架FastAPI(五)-- 中间件(测试环境、访问速率限制、请求体解析、自定义认证、重试机制、请求频率统计、路径重写)
  • 三、Hadoop 常用命令集总览
  • facebook账号类型有哪些?
  • 【解决】使用Hypermark将Markdown文件转化为HTML文件
  • Axure PR 9 多级下拉清除选择器 设计交互
  • 图解:什么是多租户?
  • 专题十六_栈_队列_优先级队列_算法专题详细总结
  • 判断自己的mac是macOS x64 还是macOS ARM64
  • ALIGN_ Tuning Multi-mode Token-level Prompt Alignment across Modalities
  • csp-j2024泄题事件
  • huggingface的lora与resume方法训练模型(以BERT为列)
  • unordered_map和unordered_set相关知识详细梳理
  • Linux | 配置docker环境时yum一直出错的解决方法
  • [软件工程]—嵌入式软件开发流程