zoukankan      html  css  js  c++  java
  • 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
    }

  • 相关阅读:
    Java使用google开源工具Thumbnailator实现图片压缩
    nginx基本配置
    CopyPropertis
    微服务(Microservices )简介
    jQuery ajax()使用serialize()提交form数据
    $.getJSON( )的使用方法简介
    理解 CSS 的 z-index 属性
    JS中的call()和apply()方法
    CSS文字换行详细解说
    如何实现JS函数的重载
  • 原文地址:https://www.cnblogs.com/niuyourou/p/13399645.html
Copyright © 2011-2022 走看看