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

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.mrgr.cn/news/59410.html

相关文章:

  • java中常见集合,非常重要!!!
  • ChatGPT结合Excel与VBA:迈向AI办公智能化与高效化
  • 深度学习-循环神经网络-LSTM对序列数据进行预测
  • Spring Boot框架下的Java多线程
  • SD-WAN企业组网的应用场景
  • 【JVM】—深入理解ZGC回收器—背景概念回收流程
  • 蒙特卡洛算法(Monte Carlo Algorithm)详细解读
  • 【人工智能-初级】第21章 线性代数与 AI:理解矩阵乘法和特征向量
  • 关于我的数据库——MySQL——第四篇
  • 【2024|滑坡数据集论文解读3】CAS滑坡数据集:用于深度学习滑坡检测的大规模多传感器数据集
  • Linux基础命令:轻松掌握终端操作
  • 道路车辆功能安全 ISO 26262标准(9-2)—面向汽车安全完整性等级 (ASIL) 和安全的分析
  • C语言浮点数实现(一)
  • 自定义类型:联合和枚举【上】
  • OA命令执行漏洞挖掘
  • [专有网络VPC]限制不同交换机下的ECS间的互通
  • 面试域——岗位职责以及工作流程
  • 高级网络互联技术:AS3001与AS3000的路由交换方案
  • 【SQL Server】中关于 COUNT 的一些使用方式区别
  • 道路车辆功能安全 ISO 26262标准(9-1)—面向汽车安全完整性等级 (ASIL) 和安全的分析
  • Java 中的 `final` 关键字详解
  • Agent与大模型的区别
  • 基于Python的自然语言处理系列(45):Sentence-BERT句子相似度计算
  • Linux初阶——信号
  • 如何提高英语口语表达能力?
  • 「C/C++」番外篇 之 软件版本号详解