lyf_kuromi 2020-09-13 15:56 采纳率: 0%
浏览 83
已采纳

LeetCode79题,不知道哪里有错误

题目是:
79. 单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。

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

示例:

board =
[
['A','B','C','E'],
['S','F','C','S'],
['A','D','E','E']
]

给定 word = "ABCCED", 返回 true
给定 word = "SEE", 返回 true
给定 word = "ABCB", 返回 false

我的代码是:
class Solution:

    def exist(self, board: List[List[str]], word: str) -> bool:

    def dfs(point,rWord):
        if rWord=='':
            return True
        else:
            temp = rWord[0]
            if point[0]-1 >= 0 and board[point[1]][point[0]-1] == temp:
                rWord = rWord[1:]
                point=[point[0]-1,point[1]]
                dfs(point,rWord)
            elif point[0]+1 <len(board[0]) and board[point[1]][point[0]+1] == temp:
                rWord = rWord[1:]
                point = [point[0]+1,point[1]]
                dfs(point,rWord)
            elif point[1]-1>=0 and board[point[1]-1][point[0]] == temp:
                rWord = rWord[1:]
                point = [point[0],point[1]-1]
                dfs(point,rWord)
            elif point[1]+1<len(board) and board[point[1]+1][point[0]] == temp:
                rWord = rWord[1:]
                point = [point[0],point[1]+1]
                dfs(point,rWord)
            else:
                return
    for i in range(len(board)):
        for j in range(len(board[0])):
            if board[i][j] == word[0]:
                dfs([j,i],word[1:])

    return False

我自己在pycharm上调试过了,发现可以进入最后的rWord==''的条件里面,并且读到了return True语句,但是不知道原因最后整个程序还在运行最终return False,求大神看看原因

图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-09-13 16:04
    关注

    你调用了dfs(point,rWord),但是没有把结果返回到上一层调用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题