题目描述
给定一个只包括 '(',')','{','}','[',']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例
1 | 输入: "()" |
思路
利用栈压入,每次压入都检查栈顶和数组的第一个元素是否匹配,直至栈为空
解答
1 | class Solution { |
给定一个只包括 '(',')','{','}','[',']'
的字符串,判断字符串是否有效。
有效字符串需满足:
注意空字符串可被认为是有效字符串。
1 | 输入: "()" |
利用栈压入,每次压入都检查栈顶和数组的第一个元素是否匹配,直至栈为空
1 | class Solution { |
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。
1 | 字符 数值 |
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
1 | 输入: "MCMXCIV" |
依照给出的条件进行编程
1 | class Solution { |
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
1 | 输入: 121 |
额,一个指针从头,一个指针从尾,两者比较,直至到终点,相等返回true,否则返回false
1 | class Solution { |
给定一个 32 位有符号整数,将整数中的数字进行反转。
注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
1 | 输入: 123 |
使用栈存入每一个值,利用栈的先进后出进行反转,注意边界问题
1 | class Solution { |
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
使用选择排序的思想进行寻找两值等于目标值
1 | class Solution { |
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
Clonable
接口的抽象类1 | public abstract class Shape implements Cloneable { |
保证一个类仅有一个实例,并提供一个访问它的全局访问点
Singleton
类1 | public class SingleObject { |
抽象工厂模式:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。
创建一个形状接口
1 | public interface Shape { |
创建实现形状接口的实体类
1 | public class Rectangle implements Shape { |
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
创建一个接口
1 | public interface Shape { |
创建实现接口的实体类
1 | public class Rectangle implements Shape { |