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

【力扣 中等 C】79. 单词搜索

目录

题目

解法一:回溯


题目

解法一:回溯

void swap(char* a, char* b) {char tmp = *a;*a = *b;*b = tmp;
}void reverse(char* str) {int start = 0, end = strlen(str) - 1;while (start < end) {swap(&str[start++], &str[end--]);}
}bool search(char** board, int m, int n, int i, int j,const char* word, int index) {if (word[index] == '\0') {return true;}if (i < 0 || i == m || j < 0 || j == n || word[index] != board[i][j]) {return false;}board[i][j] = '#';bool exist = search(board, m, n, i - 1, j, word, index + 1) || search(board, m, n, i + 1, j, word, index + 1) || search(board, m, n, i, j - 1, word, index + 1) || search(board, m, n, i, j + 1, word, index + 1);board[i][j] = word[index];return exist;
}bool exist(char** board, int boardSize, int* boardColSize, char* word) {const int m = boardSize, n = *boardColSize;int boardLetterCnts[128] = {0};for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {boardLetterCnts[board[i][j]]++;}}int wordLetterCnts[128] = {0};int len = strlen(word);for (int i = 0; i < len; i++) {wordLetterCnts[word[i]]++;}for (int i = 'A'; i <= 'Z'; i++) {if (boardLetterCnts[i] < wordLetterCnts[i] || boardLetterCnts[i + 32] < wordLetterCnts[i + 32]) {return false;}}char newWord[len + 1];strcpy(newWord, word);if (wordLetterCnts[word[0]] > wordLetterCnts[word[len - 1]]) {reverse(newWord);}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (search(board, m, n, i, j, newWord, 0)) {return true;}}}return false;
}

http://www.lqws.cn/news/553609.html

相关文章:

  • HarmonyOS NEXT仓颉开发语言实战案例:图片预览器
  • 东南亚 TikTok 直播网络专线,专线助力告别直播画面卡顿时代
  • 某省职业院校技能大赛 高职组“信息安全管理与评估”赛项第二部分:应急响应
  • Word之空白页删除2
  • Note2.3 机器学习:Adaptive Learning Rate
  • 顺序表的常见算法
  • Qt 收藏夹书签管理
  • Qt的UDP接收过一段时间后就收不到数据,readyRead() 信号不触发的彻底解决方法
  • Python 数据分析:numpy,抽提,整数数组索引
  • 鸿蒙5:其他布局容器
  • 【大数据】HDFS分布式 机架感知
  • 学习笔记(C++篇)—— Day 8
  • Node.js特训专栏-实战进阶:10.MongoDB文档操作与聚合框架
  • 提示词优化神奇: PromptPilot是什么
  • NLog、log4net、Serilog 和 Microsoft.Extensions.Logging 四大 .NET 日志库的综合对比
  • 滑坡监测接收机市场分析
  • Uni-App 小程序面试题高频问答汇总
  • 电子电气架构 --- 车载芯片SOC简介
  • VR训练美国服务器:高性能解决方案与优化指南
  • 淘宝客APP的性能优化与监控体系:架构师的技术实践
  • 力扣第73题-矩阵置零
  • SQL关键字三分钟入门:RANK() —— 窗口函数
  • QT+VS2019 开发项目 扩展安装
  • C++标准的共享型智能指针std::shared_ptr使用介绍
  • 在项目中如何巧妙使用缓存
  • 前端进阶之路-从传统前端到VUE-JS(第一期-VUE-JS环境配置)(Node-JS环境配置)(Node-JS/npm换源)
  • Python 中 `while` 循环在游戏开发中的具体应用:实战案例解析
  • 软测八股--计算机网络
  • 告别固定密钥!在单一账户下用 Cognito 实现 AWS CLI 的 MFA 单点登录
  • C++包管理工具:conan2持续集成 (CI) 教程