31.栈的压入、弹出序列
// 明白题意就不难,一开始还把问题复杂化了,记住是栈顶元素对比。
var validateStackSequences = function (pushed, popped) {
let res = [];
if(pushed.length==0) return true;
let i = 0;
let j = 0;
res.push(pushed[0]);
while(i<pushed.length&&j<popped.length){
if(res[res.length-1]==popped[j]){
res.pop();
j++;
}
else{
res.push(pushed[++i])
}
}
return res.length==0;
};
38.字符串的排列
// 应该试一下全排列的,这里调用一下set来去重。
var permutation = function (s) {
s = s.split("");
let visited = new Array(s.length).fill(true)
let res = [];
let dfs = (str) => {
if (str.length == visited.length) {
res.push(str);
return;
}
for (let i = 0; i < visited.length; i++) {
if (visited[i] == false) {
continue
}
visited[i] = false;
dfs(str + s[i]);
visited[i] = true;
}
}
dfs('');
return Array.from(new Set(res));
};