当前位置: 首页 > 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.lryc.cn/news/576608.html

相关文章:

  • Webpack 核心与基础使用
  • 数据结构之——顺序栈与链式栈
  • 个人日记本小程序开发方案(使用IntelliJ IDEA)
  • ORB-SLAM + D435i提取相机位姿 + ROS发布
  • 现代串口通讯UI框架性能对比
  • 容器安全——AI教你学Docker
  • 机器学习——线性回归
  • 【数据标注师】3D标注
  • 使用Calibre对GDS进行数据遍历
  • Note2.4 机器学习:Batch Normalization Introduction
  • 【go】初学者入门环境配置,GOPATH,GOROOT,GOCACHE,以及GoLand使用配置注意
  • LNA设计
  • 【安卓Sensor框架-1】SensorService 的启动流程
  • iOS 使用 SceneKit 实现全景图
  • MCPA2APPT:基于 A2A+MCP+ADK 的多智能体流式并发高质量 PPT 智能生成系统
  • 微处理原理与应用篇---STM32寄存器控制GPIO
  • Unity2D 街机风太空射击游戏 学习记录 #16 道具父类提取 旋涡道具
  • FPGA内部资源介绍
  • Python爬虫实战:研究sanitize库相关技术
  • 笔记07:网表的输出与导入
  • SQL关键字三分钟入门:RANK() —— 窗口函数
  • Java AI 新纪元:Spring AI 与 Spring AI Alibaba 的崛起
  • JavaScript正则表达式之正向先行断言(Positive Lookahead)深度解析
  • 第8章-财务数据
  • 某音Web端消息体ProtoBuf结构解析
  • TCP 在高速网络下的大数据量传输优化:拥塞控制、效率保障与协议演进​
  • Linux更改国内镜像源
  • InnoDB的undo日志涉及的页结构
  • C语言二级指针与多级指针
  • 国内公司把数据湖做成了数据库