目录:
- swap(数字、字符串、)
- reverseString
- reverseWords
swap
/** 借助临时变量 */
function swap(str1, str2) {
const temp = str1;
str1 = str2;
str2 = temp;
}
/** 解构赋值 */
[a, b] = [b, a];
/** 对象 */
{a,b} = {a:b,b:a}
/** 加法 只适用于数字 */
a += b;
b = a - b;
a -= b;
/**
* 加法 简写
* 基本类型的值,保存的就是这个值
*/
a = a + b - (b = a);
/** 借助数组实现 */
a = [a, b][1];
b = [a, b][0];
// 简写
b = [a, (b = a)][0];
/** 借助数组实现 */
a = { a:a, b:b }['a'];
b = { a:a, b:b }['b'];
// 简写
b = {a:a,b:(a=b)}['a']
reverseString
// [...str]取代str.split('')
const reverseString = str => [...str].reverse().join('');
/**
* 常规方法
* @param {string} s
* @return {string}
*/
function swap(s) {
if (s.length <= 1) return s;
let result = '';
for (let i = s.length - 1; i >= 0; i -= 1) {
result += s[i];
}
return result;
}
/*
* @param {string} s string of (n) length
* @return {string} returns a reversed string
*/
function reverseString(s) {
// edge case
if (s.length <= 1) return s;
// split and swap
const arr = s.split('');
let start = 0;
let end = arr.length - 1;
while (start < end) {
// swap characters
const temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
// move towards middle
start += 1;
end -= 1;
}
return arr.join('');
}
reverseWords
/**
* @param {string} s
* @return {string}
*/
function reverseWords(s) {
return s.replace(/^\s+/, '') // 去除头部多余空格
.replace(/\s+$/, '') // 去除尾部多余空格
.replace(/(\w+)\s+/, '$1 ') // 合并中间多余空格为一个
.split(/\s/)// 拆分为字符串
.reverse() // 反转字符串
.join('');
}