做网站主图多少钱,长沙h5建站,wordpress数据写入,三合一网站是什么目录
虚拟DOM【腾讯音乐笔试】
连字转驼峰【美团一面】
1.split(-)
2.toUpperCase()
3.slice(1)
用友sp
一面【二选一】
数组相邻和最大的对应两个元素
千位分割【无负数#xff0c;含小数】
二面
华容道#xff1a;BFS
k / 3, y k % 3; //一维数组下标转化到二…目录
虚拟DOM【腾讯音乐笔试】
连字转驼峰【美团一面】
1.split(-)
2.toUpperCase()
3.slice(1)
用友sp
一面【二选一】
数组相邻和最大的对应两个元素
千位分割【无负数含小数】
二面
华容道BFS
k / 3, y k % 3; //一维数组下标转化到二维数组中的坐标
swap(t[k],t[a*3b]);
版本号排序【滴滴提前批】
leetCode394字符串解码【地平线一面、金山笔试】
k[encoded_string]
A.正则表达式
B.递归
C.栈
消除相邻同字符【地平线一面】
龙湖一面
输入1返回0输入0返回1
条件三元运算符
位运算异或操作
逻辑 NOT 运算符
减法
条件语句
数组映射
求和1-100的数组
等差数列
reduce
拓展等比数列 虚拟DOM【腾讯音乐笔试】
class VNode {constructor(tagName, props, children) {this.tagName tagName;this.props props;this.children children;}
}const h (tagName, props, children) new VNode(tagName, props, children);const ul h(ul, { id: list, style: color:red }, [h(li, { class: item }, [Item 1]),h(li, { class: item }, [Item 2]),h(li, { class: item }, [Item 3])
]);// 渲染目标DOM
function render(node) {const element document.createElement(node.tagName);element.id node.props.id;element.style node.props.style;for (let i 0; i node.children.length; i) {const child node.children[i];const childElement render(child);element.appendChild(childElement);}return element;
}const ulDom render(ul);
console.log(ulDom);连字转驼峰【美团一面】
1.split(-)
2.toUpperCase()
3.slice(1)
function transformString(input) {const words input.split(-); // 使用连字符分割字符串let result ;for (let i 0; i words.length; i) {if (i 0) {result words[i]; // 第一个单词保持不变} else if (words[i]) {result words[i][0].toUpperCase() words[i].slice(1); // 非空单词首字母大写}}return result;
}// 示例用法
const inputString -font-size;
const transformedString transformString(inputString);
console.log(transformedString); // 输出 fontSize用友sp
一面【二选一】
数组相邻和最大的对应两个元素
千位分割【无负数含小数】
function formatNumberWithCommas(number) {// 将数字转换为字符串const numStr number.toString();// 判断是否为小数const isDecimal numStr.includes(.);// 如果是小数分割整数部分和小数部分let integerPart numStr;let decimalPart ;if (isDecimal) {[integerPart, decimalPart] numStr.split(.);}// 使用贪心算法从右往左插入逗号let formattedInteger ;let count 0;for (let i integerPart.length - 1; i 0; i--) {formattedInteger integerPart[i] formattedInteger;count;if (count 3 i ! 0) {formattedInteger , formattedInteger;count 0;}}// 如果有小数部分添加回小数点和小数部分const formattedNumber isDecimal? formattedInteger . decimalPart: formattedInteger;return formattedNumber;
}// 测试
const number1 -1234567.89;
const number2 12345.67;
const number3 123456;
console.log(formatNumberWithCommas(number1)); // 输出 -1,234,567.89
console.log(formatNumberWithCommas(number2)); // 输出 12,345.67
console.log(formatNumberWithCommas(number3)); // 输出 123,456二面
华容道BFS
k / 3, y k % 3; //一维数组下标转化到二维数组中的坐标
swap(t[k],t[a*3b]);
distance 数组用于记录每个状态距离初始状态的步数。
在华容道问题中每次移动一次就相当于从一个状态转移到了另一个状态。
BFS的核心思想是从初始状态开始逐步地将可能的状态加入队列并记录每个状态距离初始状态经过的步数。 #include iostream
#include algorithm
#include queue
#include unordered_mapusing namespace std;int bfs(string start)
{string end 12345678x;queuestring q;unordered_mapstring,int d;q.push(start);d[start] 0;int dx[] {-1,0,1,0}, dy[] {0,1,0,-1};//宽搜过程while(q.size()){auto t q.front();q.pop();int distance d[t];if(t end) return distance;//状态转移//找到x的位置int k t.find(x); //返回x的下标int x k / 3, y k % 3; //一维数组下标转化到二维数组中的坐标//枚举上下左右四个方向for(int i 0; i 4; i ){int a x dx[i], b y dy[i];if(a 0 a 3 b 0 b 3){swap(t[k],t[a*3b]);if(!d.count(t)) //当前更新的状态没有搜到过{d[t] distance 1; //更新当前距离q.push(t); //把新的状态加到队列中}swap(t[k],t[a*3b]); //状态恢复}}}return -1;
}
int main()
{string start;for(int i 0 ; i 9; i ){char c;cin c;start c;}cout bfs(start) endl;return 0;
}版本号排序【滴滴提前批】
// 假设有一个版本号数组
const versionNumbers [1.0.2, 1.1.0, 2.0.0, 1.0.1];// 定义一个比较函数来进行版本号排序
function compareVersions(versionA, versionB) {const partsA versionA.split(.).map(Number);const partsB versionB.split(.).map(Number);for (let i 0; i Math.max(partsA.length, partsB.length); i) {const partA partsA[i] || 0;const partB partsB[i] || 0;if (partA partB) return -1;if (partA partB) return 1;}return 0;
}// 使用比较函数对版本号数组进行排序
const sortedVersions versionNumbers.sort(compareVersions);// 打印排序后的版本号数组
console.log(sortedVersions);leetCode394字符串解码【地平线一面、金山笔试】
k[encoded_string]
表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数
示例1
输入s 3[a]2[bc]
输出aaabcbc
示例2
输入s 3[a2[c]]
输出accaccacc
输入s 2[abc]3[cd]ef
输出abcabccdcdcdef
A.正则表达式
var decodeString function(s) {const regex /\d\[[a-zA-Z]\]/g; // Match patterns like cnt[str]while (s.match(regex)) {s s.replace(regex, (match) {const cnt parseInt(match.match(/\d/)[0]); const subStr match.match(/[a-zA-Z]/)[0]; return subStr.repeat(cnt); // Repeat str cnt times});}return s;
};
B.递归
function flattenString(str) {let result ;for (let i 0; i str.length; i) {if (str[i] 0 str[i] 9) { // 如果当前字符是数字let j i;while (j str.length str[j] 0 str[j] 9) j; // 找到所有的数字字符let num parseInt(str.substring(i, j)); // 转化为数字let count 1; // 用于找到与当前左括号匹配的右括号let k j 1;while (k str.length) {if (str[k] [) count;else if (str[k] ]) count--;if (count 0) break;k;}let innerStr flattenString(str.substring(j 1, k)); // 递归地处理方括号内的字符串while (num-- 0) result innerStr;i k; // 移动索引位置} else if (str[i] ! [ str[i] ! ]) { // 忽略方括号result str[i];}}return result;
}
C.栈
/*** param {string} s* return {string}*/
var decodeString function(s) {let subStr ;const stack [];for (const char of s) {if (char ]) {let cur stack.pop();// Build the subStr within the bracketswhile (cur ! [) {subStr cur subStr;cur stack.pop();}let num ;cur stack.pop();// Extract the repetition countwhile (!isNaN(cur)) {num cur num;cur stack.pop();}// Put back any non-numeric charactersif (cur ! undefined) {stack.push(cur);}// Repeat subStr and push it back onto the stackstack.push(subStr.repeat(parseInt(num, 10)));subStr ;} else {stack.push(char);}}return stack.join();
};
消除相邻同字符【地平线一面】
function eliminateAdjacentDuplicates(input) {const result [];for (let i 0; i input.length; i) {if (i 0 || input[i] ! input[i - 1]) {result.push(input[i]);}}return result.join();
}const inputString abccbbb;
const resultString eliminateAdjacentDuplicates(inputString);
console.log(resultString); // 输出 abcb龙湖一面
输入1返回0输入0返回1
条件三元运算符
位运算异或操作
逻辑 NOT 运算符
减法
条件语句
数组映射
求和1-100的数组
等差数列 reduce
const array Array.from({ length: 100 }, (_, i) i 1); // 创建包含1到100的数组const sum array.reduce((accumulator, currentValue) accumulator currentValue, 0);console.log(sum); // 输出5050拓展等比数列