回文字符串(学习笔记)
介绍回文字符串,就是正着读和倒着读都一样的字符串,比如说这样:'abccba',回文字符串还有一个特性,单个字符串肯定回文,也就是说'aba'也是回文字符串; 根据这个定义,我们不难写出判断回文字符串的代码: :smiley: 123456function isPalindrome(str) { // 先反转字符串 const reversedStr = str.split('').reverse().join(''); // 判断反转前后是否相等 return reversedStr === str;} 也可以从回文字符串的对称性考虑(记住这个对称性,很重要)还可以这样写: 12345678910111213function isPalindrome(str) { if (!str) return; let len = str.length; let k = len - 1; // 指针 for (let i = 0; i < ...
双指针法(学习笔记)
双指针法双指针法常用于求和和排序之类的场景,是一种时间换空间的算法。学习算法只看理论知识是远远不够的,需要从各种各样的题中去细细体悟算法的魅力,从而真真的把知识刻在脑子里,成为自己的一部分;所以此篇文章基本都是算法题,让我们从实际的代码角度来揭开双指针的神秘面纱吧!下面的题都是从某一方面的知识写的例子,大家如果有其他想法,代码敲起来~ 1. 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。 这道题没有用到双指针,单纯的用来练练手,从第二题开始为双指针算法题;示例: 给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 求和问题基本可以反向思考为 差值问题,比如说a + b = target,则可以想成target - a = b, 这样就能避免对数组进行两次循环,再对循环的值相加; 12345678910111213141516171819202122232425262728// 方法一let nums ...
二叉树遍历(学习笔记)
二叉树123456789101112131415161718const root = { val: "A", left: { val: "B", left: { val: "D" }, right: { val: "E" } }, right: { val: "C", right: { val: "F" } }}; 1.先序遍历 遍历的顺序是: 根节点 -> 左子树 ->右子树 123456789101112function preorder(root) { // 递归边界,root 为空 if(!root) return ; // 输出当前遍历的结点值 console.log('当前遍历的 ...
pdfjs-dist + vue 使用记录
现在公司把外部网都限制死了,导致笔记都不能做,为知笔记这么好使的东西居然不给用,好气哦~ 但是做笔记的习惯不能丢!暂且把blog当笔记使吧~ 123456<template> <div class="pdf_container bg_gray" ref="pdfWrap"> <canvas ref="pdfCanvas"></canvas> <!-- <div ref="pdfSvg"></div> --> </div></template> 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 ...
PC网页项目全屏、退出全屏
最近自己在写pc端的小项目(react + ts + mobx + react-intl ),写了一个全屏和退出全屏的功能,特此记录; 先上效果图: 代码部分1.store部分12345678910111213141516171819202122// 默认非全屏@observable fullScreen: boolean = false;// 全屏事件@actionrequestFullScreen = () => { this.fullScreen = true; var docElm = document.documentElement; if (docElm.requestFullscreen) { docElm.requestFullscreen(); }}// 退出全屏@actionexitFullscreen = () => { this.fullScreen = false; if (document.exitFullscreen) { ...
面试题:使 (a === 1 && a === 2 && a === 3) 为true
一看题目就知道 a 不可能是个固定的值,且在一个判断为true就要变成下一个判断的值。由此推断,此处需要使用到数据劫持! Object.defineProperty12345678let num = 1;Object.defineProperty(this,'a',{ get:function(){ return num++ }})console.log(a===1 && a===2 && a===3) // true Proxy发现用proxy也能做这样的事,但是得把a放到对象里(对Proxy理解不是很透彻,不知道还有没有其他写法); 123456789101112let obj= new Proxy({a:0},{ get(target,key){ data = Reflect.get(target,key) + 1; this.set(target, key, data) return data; ...
vue3.0数据双向绑定学习记录
尤雨溪说:“管你学不学的动,老子就要更新!” 玩笑开完了,代码撸起来~ :smile: 下面是使用自己实现的双向绑定js在页面的效果: index.html 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title></head><body> <div id="app"> </div> <but ...
vue项目用HbuilderX 打包app
最近公司要把之前做的H5项目打包成app,刚好研究了一下。其实用hbuilder打包还是很简单的,就简单的几步;废话不多说,开始吧~ 一. vue项目 项目运行npm run build打出生产包,这个包先拷贝到剪切板以备后面使用~ 二. Hbuild X1.新建项目; 2.新建好了把里面一些没有的文件夹删除,把manifest.json留下; 3.把vue项目打好的包放进去; 4.配置manifest.json文件; 5.点击发行 -> 原生App-云打包 ->; 有一个要注意的点,Hbuilder + vue 打出来的包,路由会失效,在页面点击返回会直接退出应用,这个需要在index.html的head中插入下面这行代码: 1234567891011121314151617181920212223242526272829303132document.addEventListener('plusready', function() { var webview = plus.webview.currentWebview ...
Mobx学习记录
Mobx工作记录之前由于项目比较急,需要在短时间内学习并上手mobx,虽然已经用react+mobx开发了好几个项目,一直都没时间总结一下。特此梳理一下,让知识沉淀沉淀~Mobx官方文档Mobx官方中文文档 Mobx的核心概念Mobx的核心原理是通过action触发state的变化,进而触发state的衍生对象(computed value & Reactions)。 1.State(状态) 其实就是我们需要用Mobx管理起来的数据。 在Mobx中,State就对应业务的最原始状态,通过observable方法,可以使这些状态变得可观察。值得注意的一点是,当某一数据被observable包装后,他返回的是被observable包装后的类型。 2.Action(动作)动作 是任一一段可以改变状态的代码。用户事件、后端数据推送、预定事件、等等。 动作类似于用户在excel单元格中输入一个新的值。 我们的异步请求都可以在这里做。但是这里要注意一点,异步的函数里面对state的更改是不能检测到的。所以异步的回调也需要用action()包一下: 12345678910111213cla ...
Markdown常用语法测试
测试文字这是一篇测试的文章,随便写一些什么东西吧。大学时,时间是一学期一学期来计算的;毕业后,时间就变成了一年的一年的计算,感觉一晃就是一年,一晃就是好几年…… 这是一篇测试的文章,随便写一些什么东西吧。大学时,时间是一学期一学期来计算的;毕业后,时间就变成了一年的一年的计算,感觉一晃就是一年,一晃就是好几年…… 测试代码这里来放一点代码吧: 12<div>测试HTML标签展示</div> 12console.log('hello world!'); 12$ hexo server 123456.box{ width:100px; height:100px;} 分割线1234-------******** 超链接1[百度](http://baidu.com) 百度 列表 这是一篇测试的文章,随便写一些什么东西吧。大学时,时间是一学期一学期来计算的;毕业后,时间就变成了一年的一年的计算,感觉一晃就是一年,一晃就是好几年…… 这是一篇测试的文章,随便写一些什么东西吧。大学时,时间是一学期一学 ...