123.Word Search-单词搜索(中等题)

单词搜索算法
本文介绍了一种在二维字母矩阵中搜索特定单词的算法。通过深度优先搜索(DFS)策略,检查单词是否能通过矩阵中相邻字母构成。算法详细讨论了如何避免重复访问同一位置的字母。

单词搜索

  1. 题目

    给出一个二维的字母板和一个单词,寻找字母板网格中是否存在这个单词。
    单词可以由按顺序的相邻单元的字母组成,其中相邻单元指的是水平或者垂直方向相邻。每个单元中的字母最多只能使用一次。

  2. 样例

    给出board =
    [
    “ABCE”,
    “SFCS”,
    “ADEE”
    ]
    word = “ABCCED”, ->返回 true,
    word = “SEE”,-> 返回 true,
    word = “ABCB”, -> 返回 false.

  3. 题解

    在矩阵中找到和word相同的第一个字符,开始进行DFS查找,搜索方向为前后左右四个方向。在递归是注意标注当前访问的矩阵字符。

public class Solution {
 /**
 * @param board: A list of lists of character
 * @param word: A string
 * @return: A boolean
 */
 public boolean exist(char[][] board, String word) {
    for(int i = 0; i< board.length; i++)
    {
        for(int j=0; j< board[0].length; j++)
        {
            if(board[i][j] == word.charAt(0))
            {
                boolean result =  find(board, i, j, word, 0);
                if (result)
                {
                    return result;
                }
            }
        }
    }
    return false;     
 }

 private boolean find(char[][] board,int i,int j,String word,int start)
 {
     if (start == word.length())
     {
         return true;
     }
     if (i<0 || i>=board.length || j<0 || j>= board[0].length || board[i][j] != word.charAt(start))
     {
            return false;
     }
     board[i][j] = '#';
     boolean result = (find(board, i-1, j, word, start+1) 
            || find(board, i, j-1, word, start+1) 
            || find(board, i+1, j, word, start+1) 
            || find(board, i, j+1, word, start+1));
     board[i][j] = word.charAt(start);
     return result;
 }
}

Last Update 2016.10.16

### Morse Code Translation Morse code 是一种通过点(`.`)划(`-`)来表示字母、数字其他字符的编码方式。给定的例子 `.---- ..--- ...--` 表示一组莫尔斯电码序列,可以通过解析将其转换为对应的明文。 以下是 Python 实现的代码片段用于将莫尔斯电码转换为可读文本: ```python # 定义莫尔斯电码字典 morse_code_dict = { '.-': 'A', '-...': 'B', '-.-.': 'C', '-..': 'D', '.': 'E', '..-.': 'F', '--.': 'G', '....': 'H', '..': 'I', '.---': 'J', '-.-': 'K', '.-..': 'L', '--': 'M', '-.': 'N', '---': 'O', '.--.': 'P', '--.-': 'Q', '.-.': 'R', '...': 'S', '-': 'T', '..-': 'U', '...-': 'V', '.--': 'W', '-..-': 'X', '-.--': 'Y', '--..': 'Z', '-----': '0', '.----': '1', '..---': '2', '...--': '3', '....-': '4', '.....': '5', '-....': '6', '--...': '7', '---..': '8', '----.': '9' } def morse_to_text(morse_code): result = [] words = morse_code.split(' / ') # 使用斜杠分隔单词 for word in words: letters = word.split(' ') translated_word = ''.join([morse_code_dict.get(letter, '') for letter in letters]) result.append(translated_word) return ' '.join(result) input_morse = ".---- ..--- ...--" output_text = morse_to_text(input_morse) print(f"Translated text: {output_text}") ``` 上述代码会输出 `123`,因为 `.----` 对应于数字 `1`,`..---` 对应于数字 `2`,而 `...--` 则对应于数字 `3`[^1]。 ### 解析说明 在莫尔斯电码中,每个符号都映射到特定的字母或数字上。例如: - 数字 `1` 的莫尔斯电码是 `.----` - 数字 `2` 的莫尔斯电码是 `..---` - 数字 `3` 的莫尔斯电码是 `...--` 因此,`.---- ..--- ...--` 被成功解析并转化为阿拉伯数字形式 `123`。 #### 注意事项 程序假设输入的莫尔斯电码格式正确无误,并按照标准定义进行匹配。如果存在未知符号,则返回为空字符串[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值