摘要:
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例:输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3 思路1:遍历字符串的每个字符,如果字符在哈希表中没有,就添加到哈希表中去,直到已经在哈希表中存在的即找到重 阅读全文
摘要:
题目:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。(你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。) 示例:给定 nums = [2, 7, 11, 15], target = 9,返回 [0, 1],因 阅读全文
摘要:
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 阅读全文
摘要:
假设有一个需求:要求实现一个糖果机的功能,糖果机的功能如下,用一个状态图来表示: 上图描述了糖果机在不同状态下可能会执行的操作和状态间的转换关系,图中每个圆圈代表一种状态。 下面我们按照常规的思路来实现一个糖果机,创建一个糖果机类,用int常量分别代表四种状态,另外定义int变量state代表当前状 阅读全文
摘要:
在抽象类中创建一个模板方法,这个方法可以调用在抽象类中定义好的其它方法,这些方法可以是抽象的,也可以是默认方法,甚至还可以是一个空的方法(叫做钩子),可以在子类中重写抽象方法或重写钩子方法,从而实现模板方法的某些具体步骤,这就是模板方法模式。模板方法模式可以实现代码的复用。 让我们来看一个具体的例子 阅读全文
摘要:
1.适配器模式(Adapter Pattern) 在生活中,如果我们想给笔记本电脑充电,那么直接将电脑和插座连接肯定是不行的,因为插座的电压是220V的交流电,而笔记本电脑需要的是较低电压的直流电,因此我们需要通过电源适配器将交流高电压转换成我们想要的直流低电压。适配器模式也是同样的道理,客户想要一 阅读全文
摘要:
命令模式就是将一系列执行操作封装成一个命令对象,这样这个命令对象就可以被传递,在需要执行的时候执行,比如当作队列或者日志的参数,同时命令模式也支持操作的撤销。 比如有一个需求,要求写一个遥控器类,用遥控器去控制不同电器的开关,下面是遥控器控制打开电灯的代码示例,遥控器按下打开按钮时电灯就会打开,按下 阅读全文
摘要:
装饰者模式可以实现在不修改任何代码的情况下,给对象赋予新的功能。 1.使用继承的缺陷: 假设一家咖啡店的类设计是有一个抽象父类Beverage(饮料): public abstract class Beverage { //由子类设置,用来描述具体饮料 protected String descri 阅读全文
摘要:
1.单例模式的定义:确保一个类只有一个实例,并提供一个全局访问点。 编写单例实例的要点是: 1)将构造方法私有化,确保别的类不能通过构造方法创建对象; 2)在本类中通过私有化的构造方法创建对象; 3)提供一个静态方法让其它类可以获取这个对象。 使用静态方法是因为普通方法要通过对象来调用,而其它类不能 阅读全文
摘要:
工厂模式可以细分为三种类型:1)简单工厂 2)工厂方法 3)抽象工厂。简单工厂其实并不是一个设计模式,反而比较像是一种编程习惯。总体来说,工厂模式可以减少应用程序和具体类之间的依赖,促进松耦合,同时也方便后期的扩展。 1.简单工厂 很多时候我们都采用new的方式直接创建一个对象,但当创建对象的代码逻 阅读全文