25. Reverse Nodes in k-Group Hard

本文介绍了一种使用递归实现链表K组翻转的方法。该方法首先计算链表长度,若长度小于K则直接返回原链表;反之,则进行翻转操作,并递归处理剩余部分。

又是上一题的加强版,还是用递归解决,虽然慢,但是好写啊~主要思想,先把前k个reverse,再递归计算剩下的链表

ListNode* reverseKGroup(ListNode* head, int k) {
    int length = 0;
    ListNode* front = head, *back, *tail;
        while(front != NULL){length++; front = front->next;}
        if(length < k)return head;


        ListNode pre(-1);
        pre.next = head;
        front = pre.next;
        back = front->next;
        tail = front;
        for(int i = 1; i < k; i++){
        cout << front->val << " " << back->val << endl;
        tail->next = back->next;
        back->next = front;
        pre.next = back;


        front = pre.next;
        back = tail->next;
        }
        tail->next = reverseKGroup(tail->next, k);
        return pre.next;
    }

### 莫尔斯电码翻译或解码 莫尔斯电码是一种通过点(`.`)、划(`-`)以及间隔来表示字符的通信方式。为了实现莫尔斯电码的翻译或解码功能,可以设计一个基于字典映射的方法[^1]。这种方法的核心在于建立字母表与莫尔斯电码之间的对应关系。 以下是 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 text_to_morse(text): morse_code = [] for char in text.upper(): if char in MORSE_CODE_DICT: morse_code.append(MORSE_CODE_DICT[char]) elif char == ' ': morse_code.append('') # 表示单词间的分隔符为空字符串 return ' '.join(morse_code) def morse_to_text(morse_code): reverse_dict = {v: k for k, v in MORSE_CODE_DICT.items()} words = morse_code.split(' ') # 单词间由双空格分隔 decoded_words = [] for word in words: chars = word.split() decoded_word = ''.join([reverse_dict[char] if char in reverse_dict else '?' for char in chars]) decoded_words.append(decoded_word) return ' '.join(decoded_words) # 测试函数 text_input = "HELLO WORLD" morse_output = text_to_morse(text_input) print(f"Text to Morse: {morse_output}") morse_input = "... --- ..." text_output = morse_to_text(morse_input) print(f"Morse to Text: {text_output}") ``` 上述代码定义了一个 `MORSE_CODE_DICT` 字典用于存储英文字母及其对应的莫尔斯电码。两个主要函数分别是 `text_to_morse()` 和 `morse_to_text()`,分别实现了从文本到莫尔斯电码和从莫尔斯电码到文本的转换逻辑[^2]。 #### 关键技术细节 - **编码过程**:将输入文本中的每个字符逐一查找其在 `MORSE_CODE_DICT` 中的值并拼接成完整的莫尔斯电码串。 - **解码过程**:利用反向字典 `reverse_dict` 将莫尔斯电码逐一分割解析回原始文本形式。 - **特殊处理**:对于无法匹配的字符,默认返回问号 `'?'` 来标记未知部分。 此方法适用于简单的场景,但对于复杂的嵌套结构或者动态调整需求,则可能需要引入更高级的技术框架支持[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值