文章目录
1. 剑指 Offer 05. 替换空格
原题链接
split、join
var replaceSpace = function(s) {
return s.split(' ').join("%20");
};
2. 剑指 Offer 06. 从尾到头打印链表
原题链接
unshift
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
var reversePrint = function(head) {
const nodes = [];
while(head != null){
nodes.unshift(head.val);
head = head.next;
}
return nodes;
};
3. 剑指 Offer 09. 用两个栈实现队列
原题链接
栈先入后出、队列先入先出
var CQueue = function() {
this.stackA = [];
this.stackB = [];
}
/**
* @param {number} value
* @return {void}
*/
CQueue.prototype.appendTail = function(value) {
this.stackA.push(value);
}
/**
* @return {number}
*/
CQueue.prototype.deleteHead = function() {
if(this.stackB.length){
return this.stackB.pop();
}else{
while(this.stackA.length){
this.stackB.push(this.stackA.pop());
}
if(!this.stackB.length){
return -1
}else{
return this.stackB.pop()
}
}
}
4. 剑指 Offer 20. 表示数值的字符串
原题链接
正则表达式、ES6模板字符串
var isNumber = function(s) {
const sign = '[\\+\\-]?';
// 匹配整数
const isInt = `(${sign}\\d+)`;
// 匹配小数
const isFloat = `(${sign}((\\d+\\.\\d*)|(\\.\\d+)))`;
// 拼接为正则表达式
const re = new RegExp(`^(\\s*)(${isInt}|${isFloat})([eE]${isInt})?(\\s*)$`);
return re.test(s);
}
5. 剑指 Offer 24. 反转链表
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
var reverseList = function(head) {
let pre = null;
let curr = head;
while(curr){
let tmp = curr.next;// 保存curr原本指向的下一个节点
curr.next = pre; // curr指向pre
pre = curr; // pre移动到curr位置
curr = tmp; // curr移动到原指向的下一节点位置
}
return pre;
}