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

C语言 | Leetcode C语言题解之第514题自由之路

题目:

题解:

int findRotateSteps(char* ring, char* key) {
    int n = strlen(ring), m = strlen(key);
    int pos[26][n], posSize[26];
    memset(posSize, 0, sizeof(posSize));
    for (int i = 0; i < n; ++i) {
        int x = ring[i] - 'a';
        pos[x][posSize[x]++] = i;
    }
    int dp[m][n];
    memset(dp, 0x3f3f3f3f, sizeof(dp));
    for (int i = 0; i < posSize[key[0] - 'a']; i++) {
        int x = pos[key[0] - 'a'][i];
        dp[0][x] = fmin(x, n - x) + 1;
    }
    for (int i = 1; i < m; ++i) {
        for (int j = 0; j < posSize[key[i] - 'a']; ++j) {
            int x = pos[key[i] - 'a'][j];
            for (int k = 0; k < posSize[key[i - 1] - 'a']; ++k) {
                int y = pos[key[i - 1] - 'a'][k];
                dp[i][x] = fmin(dp[i][x], dp[i - 1][y] + fmin(abs(x - y), n - abs(x - y)) + 1);
            }
        }
    }
    int ret = dp[m - 1][0];
    for (int i = 1; i < n; ++i) {
        ret = fmin(ret, dp[m - 1][i]);
    }
    return ret;
}

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

相关文章:

  • 自由学习记录(15)
  • Python中的递归函数是如何工作的,它有哪些应用场景?
  • 服务器数据恢复—EXT3文件系统下邮件数据被误删的数据恢复案例
  • javaScript整数反转
  • C++STL之stack
  • InternVL-1.1: Enhance Chinese and OCR Capabilities
  • 基于知识图谱的教学案例问答系统
  • el-date-picker时间范围搜索条件,watch监听
  • 接口自动化-框架搭建(Python+request+pytest+allure)
  • MySQL第四次作业
  • C++-继承
  • 传知代码-ChatGPT多模态命名实体识别
  • 用python将pdf转成图片转换成对应的word文件
  • 9.Three.js的光源
  • [C++11] 右值引⽤与移动语义
  • Python实践:爬取电影数据并进行数据分析
  • ORACLE数据库基于SQL*PLUS开启:闪回查询
  • 小程序中设置可拖动区域
  • Centos Stream 9部署Zabbix7.0LTS
  • Python实现深度学习模型预测控制(tensorflow)DL-MPC(Deep Learning Model Predictive Control
  • RabbitMQ常见问题持续汇总
  • 无人机机载激光雷达横向对比表
  • Qt setWindowFlags窗口标志
  • LeetCode437. 路径总和 III(2024秋季每日一题 50)
  • 摄影爱好者的福音:基于Spring Boot的在线工作室
  • 【人工智能原理】合肥工业大学 宣城校区 实验三 神经网络之网络基础