131. Palindrome Partitioning(js)

131. Palindrome Partitioning

Given a string s, partition s such that every substring of the partition is a palindrome.

Return all possible palindrome partitioning of s.

Example:

Input: "aab"
Output:
[
  ["aa","b"],
  ["a","a","b"]
]
题意:字符串切割,要求子串是回文,并返回所有的切割情况
代码如下
/**
 * @param {string} s
 * @return {string[][]}
 */
var partition = function(s) {
    let res=[];
    let curr=[];
    function backtrack(s,start,curr){
        if(start===s.length){
//             
            res.push([...curr]);
            return;
        }
        for(let i=start;i<s.length;i++){
            if(isPalindrome(s,start,i)){
//substr:接收两个参数,第二个选填,第一个表示切割的开始位置,第二个表示从切割位置开始切割字符的数量。若传入值为负数,则执行的时候会和字符串长度相加之后再运行
                curr.push(s.substr(start,i-start+1));
                backtrack(s,i+1,curr);
                curr.pop();
            }
        }
    };
    backtrack(s,0,curr);
    return res;
};

// 判断是否回文
function isPalindrome (s,start,end){
    while(start<end){
        if(s[start]!==s[end]) return false;
        start++;
        end--;
    }
    return true;
};

 

posted @ 2019-05-26 22:05  mingL  阅读(153)  评论(0编辑  收藏  举报