Leetcode131 分割回文串

  回溯解法,java:

复制代码
    public final List<List<String>> partition(String s) {
        List<List<String>> reList = new LinkedList<List<String>>();
        partition(s, 0, new Stack<String>(), reList);
        return reList;
    }

    private final void partition(String s, int point, Stack<String> stack, List<List<String>> reList) {
        if (point >= s.length()) {
            reList.add(new ArrayList<String>(stack));
            return;
        }
        for (int end = point + 1; end <= s.length(); end++) {
            String inStr = s.substring(point, end);
            if (!isalindrome(inStr)) {
                continue;
            }
            stack.push(inStr);
            partition(s, end, stack, reList);
            stack.pop();
        }
    }

    private final boolean isalindrome(String s) {
        int left = 0;
        int right = s.length() - 1;
        while (left < right) {
            if (s.charAt(left) != s.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        return true;
    }
复制代码

  回溯解法,javascript:

复制代码
function isAlin(s) {
    let begin = 0;
    let end = s.length - 1;
    while (begin < end) {
        if (s.charAt(begin) != s.charAt(end)) {
            return false;
        }
        begin++;
        end--;
    }
    return true;
}

function findPalidrome(s, begin, stack, reList) {
    if (begin == s.length) {
        reList.push(stack.slice());
        return;
    }

    for (let i = begin + 1; i <= s.length; i++) {
        let sIn = s.slice(begin, i);
        if (!isAlin(sIn)) {
            continue;
        }
        stack.push(sIn);
        findPalidrome(s, i, stack, reList);
        stack.pop();
    }
}

var partition = function(s) {
    let reList = [];
    findPalidrome(s,0,[],reList);
    return reList
}
复制代码

 

posted @   牛有肉  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示