关于 js 反转数组
/**
* [ 吃瓜][ 加油][ 汗][ 天啊][ Emm][ 社会社会][ 旺柴][ 好的][ 打脸][ 哇]
* 这样一个字符串能不能去掉其中所有的空格
*/
function removeBlanks(target) {
console.log("处理前:" + target);
const result = target.replace(/\s/g, "");
console.log("处理后:" + result);
console.log("原数据:" + target);
}
/**
* [吃瓜][加油][汗][天啊][Emm][社会社会][旺柴][好的][打脸][哇]
* 能不能把顺序调过来变成
* [哇][打脸][好的][旺柴][社会社会][Emm][天啊][汗][加油][吃瓜]
* 空间复杂度较差,使用了两个栈
*/
function revert(target) {
console.log("处理前:" + target);
let stack = [];
let newStack = [];
target.split("").forEach((char) => {
// 识别到关闭符且栈中有开始符则出栈
if (char === "]" && stack.includes("[")) {
stack.push(char);
// 将字符组装成字符串,从二维数组头部装入
newStack.unshift(stack.join(""));
// 关键步骤:清空栈,否则每一次向二维数组装入时都冗余之前装过的数据
stack.length = 0;
} else {
stack.push(char);
}
});
let result = "";
if (newStack.length > 0) {
result = newStack.join("");
}
console.log("处理后:" + result);
console.log("原数据:" + target);
}
// 程序入口
function main() {
var str =
"[ 吃瓜][ 加油][ 汗][ 天啊][ Emm][ 社会社会][ 旺柴][ 好的][ 打脸][ 哇]";
// removeBlanks(str);
// 处理前:[ 吃瓜][ 加油][ 汗][ 天啊][ Emm][ 社会社会][ 旺柴][ 好的][ 打脸][ 哇]
// 处理后:[吃瓜][加油][汗][天啊][Emm][社会社会][旺柴][好的][打脸][哇]
// 原数据:[ 吃瓜][ 加油][ 汗][ 天啊][ Emm][ 社会社会][ 旺柴][ 好的][ 打脸][ 哇]
var str2 = "[吃瓜][加油][汗][天啊][Emm][社会社会][旺柴][好的][打脸][哇]";
revert(str2);
// 处理前:[吃瓜][加油][汗][天啊][Emm][社会社会][旺柴][好的][打脸][哇]
// 处理后:[哇][打脸][好的][旺柴][社会社会][Emm][天啊][汗][加油][吃瓜]
// 原数据:[吃瓜][加油][汗][天啊][Emm][社会社会][旺柴][好的][打脸][哇]
}
main();