目录:
- swap(数字、字符串、)
- reverseString
- reverseWords
swap
1/** 借助临时变量 */ 2function swap(str1, str2) { 3 const temp = str1; 4 str1 = str2; 5 str2 = temp; 6} 7 8 9/** 解构赋值 */ 10[a, b] = [b, a]; 11 12/** 对象 */ 13{a,b} = {a:b,b:a} 14 15 16/** 加法 只适用于数字 */ 17a += b; 18b = a - b; 19a -= b; 20 21/** 22 * 加法 简写 23 * 基本类型的值,保存的就是这个值 24*/ 25a = a + b - (b = a); 26 27 28/** 借助数组实现 */ 29a = [a, b][1]; 30b = [a, b][0]; 31// 简写 32b = [a, (b = a)][0]; 33 34 35/** 借助数组实现 */ 36a = { a:a, b:b }['a']; 37b = { a:a, b:b }['b']; 38 39// 简写 40b = {a:a,b:(a=b)}['a']
reverseString
1// [...str]取代str.split('') 2const reverseString = str => [...str].reverse().join(''); 3 4 5/** 6 * 常规方法 7 * @param {string} s 8 * @return {string} 9 */ 10function swap(s) { 11 if (s.length <= 1) return s; 12 let result = ''; 13 for (let i = s.length - 1; i >= 0; i -= 1) { 14 result += s[i]; 15 } 16 return result; 17} 18 19 20 21/* 22* @param {string} s string of (n) length 23* @return {string} returns a reversed string 24*/ 25 26function reverseString(s) { 27 // edge case 28 if (s.length <= 1) return s; 29 30 // split and swap 31 const arr = s.split(''); 32 let start = 0; 33 let end = arr.length - 1; 34 35 while (start < end) { 36 // swap characters 37 const temp = arr[start]; 38 arr[start] = arr[end]; 39 arr[end] = temp; 40 41 // move towards middle 42 start += 1; 43 end -= 1; 44 } 45 46 return arr.join(''); 47}
reverseWords
1/** 2 * @param {string} s 3 * @return {string} 4 */ 5function reverseWords(s) { 6 return s.replace(/^\s+/, '') // 去除头部多余空格 7 .replace(/\s+$/, '') // 去除尾部多余空格 8 .replace(/(\w+)\s+/, '$1 ') // 合并中间多余空格为一个 9 .split(/\s/)// 拆分为字符串 10 .reverse() // 反转字符串 11 .join(''); 12}