297/449/428/271/431 Serialize and Deserialize Binary Tree/Strings

本文深入解析了LeetCode上关于序列化与反序列化的问题,包括二叉树、N叉树及字符串数组的编码与解码方法。以实际代码为例,详细介绍了如何使用长度加分隔符的编码技巧实现数据的有效转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 297:   https://leetcode.com/articles/serialize-and-deserialize-binary-tree/

2. 449:   https://leetcode.com/problems/serialize-and-deserialize-bst/description/

3.  428:  https://leetcode.com/problems/serialize-and-deserialize-n-ary-tree/description/

4. 431      https://leetcode.com/problems/encode-n-ary-tree-to-binary-tree/description/

 

5 271 https://leetcode.com/problems/encode-and-decode-strings/description/

   是编解码 字符串数组:

   核心思想是选择正确的编码函数:  String.length + 分隔符(#) + string 来进行编码即可,程序比较简单。

public class Codec {

    // Encodes a list of strings to a single string.
    public String encode(List<String> strs) {
        
        StringBuilder res = new StringBuilder();
        for(String str: strs){

            res.append(str.length()+"#"+str);
        }
        //System.out.println(res);
        return res.toString();
        
    }

    // Decodes a single string to a list of strings.
    public List<String> decode(String s) {
        List<String> list = new ArrayList<>();
         String len = "";
     
        for(int i=0; i<s.length(); i++){
           
            if(s.charAt(i) == '#'){
                int lenth = Integer.valueOf(len);  
                list.add(s.substring(i+1, i+1+lenth));
                i += lenth;
                len = "";    
            }
            else {
                len += s.charAt(i);
            }
        }
       return list;   
    }
}

 

转载于:https://www.cnblogs.com/keepAC/p/9880842.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值