• LeetCode 热题 C++ 79. 单词搜索


    力扣79

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false

    单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

    示例 1:

    输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
    输出:true
    

    示例 2:

    输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
    输出:true
    

    示例 3:

    输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
    输出:false
    

    提示:

    • m == board.length
    • n = board[i].length
    • 1 <= m, n <= 6
    • 1 <= word.length <= 15
    • boardword 仅由大小写英文字母组成

    思路:

    dfs。

    遇到的坑:一开始每次用的是减少字符串,用substr的,但是这样会超时。

    所以再增加一个变量k,每次要比较的就是word[k]和当前字母。

    代码:

    1. class Solution {
    2. public:
    3. int dx[4]={-1,0,1,0};
    4. int dy[4]={0,-1,0,1};
    5. int d[10][10];
    6. bool dfs(int x,int y,vectorchar>>& board,string s,int k)
    7. {
    8. if(s.length()==k)
    9. {
    10. return true;
    11. }
    12. for(int i=0;i<4;i++)
    13. {
    14. int x1=x+dx[i];
    15. int y1=y+dy[i];
    16. if(x1<0||x1>board.size()-1||y1<0||y1>board[0].size()-1||d[x1][y1]==1)continue;
    17. //cout<
    18. if(board[x1][y1]!=s[k])continue;
    19. d[x1][y1]=1;
    20. if(s.size()>1){
    21. if(dfs(x1,y1,board,s,k+1))return true;
    22. }
    23. else{
    24. return true;
    25. }
    26. d[x1][y1]=0;
    27. }
    28. return false;
    29. }
    30. bool exist(vectorchar>>& board, string word) {
    31. int n=board.size();
    32. int m=board[0].size();
    33. for(int i=0;i
    34. {
    35. for(int j=0;j
    36. {
    37. if(board[i][j]==word[0]){
    38. memset(d,0,sizeof(d));
    39. d[i][j]=1;
    40. if(word.size()>1){
    41. if(dfs(i,j,board,word,1))return true;
    42. }
    43. else return true;
    44. }
    45. }
    46. }
    47. return false;
    48. }
    49. };

     

  • 相关阅读:
    Oracle 数据库历史备份数据恢复验证
    LeetCode——622.设计循环队列
    单臂路由实现VLAN间路由
    Kubectl 使用详解——k8s陈述式资源管理
    K8s bridge、ip分配原理
    微信小程序---软件学习(制作小程序软件的安装,创建第一个小程序)
    【Java】接口 interface
    C语言之内存函数
    二维多孔介质图像的粒度分布研究(Matlab代码实现)
    JavaEE - CORS跨域
  • 原文地址:https://blog.csdn.net/Zero_979/article/details/127988930