竞赛编程
格式化打印
| |
- 整数
%d:打印单个整数。%Nd:固定长度为 N,右对齐,填充空格,不截取。("%5d", -12) == "^^-12"。%-Nd:固定长度为 N,左对齐,填充空格,不截取。("%-5d", -12) == "-12^^"。%0Nd:固定长度为 N,右对齐,填充 0,不截取。("%05d", -12) == "-0012"。
- 浮点数
%f:打印单个浮点数
- 字符
%c:打印单个字符
- 布尔值
%b:打印单个布尔值
| 符号 | 含义 |
|---|---|
%c | 字符 |
%d | 整数 |
%8d | 整数,固定长度,左侧补空白字符,不会截断整数 |
%8d | 整数,固定长度,左侧补空白字符,不会截断整数 |
C++
Java
I/O
读取数据
| |
打印数据
| |
重定向
| |
命令行参数
| |
字符串
构造方法
String(byte[] bytes)String(byte[] bytes, int offset, int length)String(char[] value)String(char[] value, int offset, int count)String(StringBuffer buffer)String(StringBuilder builder)
常用方法
int length():返回字符串长度。boolean isEmpty():字符串是否为空。String concat(String str):将 str 拼接到字符串末尾,等同于 +=。String repeat(int count):返回重复 count 次得到的字符串。
比较
boolean equals(Object anObject):字符串是否相等。boolean equalsIgnoreCase(String anotherString):字符串是否相等,忽略大小写。boolean contentEquals(CharSequence cs):字符串是否相等(可比较 String、StringBuilder、StringBuffer)。int compareTo(String anotherString):比较字符串,小于返回 -1,相等返回 0,大于返回 1。int compareToIgnoreCase(String str):比较字符串,忽略大小写,小于返回 -1,相等返回 0,大于返回 1。boolean startsWith(String prefix)boolean startsWith(String prefix, int toffset)boolean endsWith(String suffix)boolean matches(String regex)boolean contains(CharSequence s)boolean isBlank():字符串是否为空白(由空格、制表符、换行符、回车符构成)。
查找
char charAt(int index):返回索引 index 处的字符。int indexOf(int ch):返回字符 ch 第一次出现的索引,未找到返回 -1。int indexOf(int ch, int fromIndex):返回字符 ch 从 fromIndex 处第一次出现的索引,未找到返回 -1。int indexOf(String str)::返回字符串 str 第一次出现的索引,未找到返回 -1。int indexOf(String str, int fromIndex):返回字符串 str 从 fromIndex 处第一次出现的索引,未找到返回 -1。int lastIndexOf(int ch):返回字符 ch 最后一次出现的索引,未找到返回 -1。int lastIndexOf(int ch, int fromIndex):返回字符 ch 从 fromIndex 处最后一次出现的索引,未找到返回 -1。int lastIndexOf(String str):返回字符串 str 最后一次出现的索引,未找到返回 -1。int lastIndexOf(String str, int fromIndex):返回字符串 str 从 fromIndex 处最后一次出现的索引,未找到返回 -1。
替换
String replace(char oldChar, char newChar):替换所有指定字符。String replace(CharSequence target, CharSequence replacement):替换所有字符串。String replaceAll(String regex, String replacement)String replaceFirst(String regex, String replacement)
分割/合并
String[] split(String regex):按 regex 分割字符串,支持正则表达式。String[] split(String regex, int limit)static String join(CharSequence delimiter, CharSequence... elements)static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
处理
String toLowerCase()String toUpperCase()String strip()String stripLeading()String stripTrailing()String trim()
子串
String substring(int beginIndex):返回子串 s[beginIndex, n)。String substring(int beginIndex, int endIndex):返回子串 s[beginIndex, endIndex)。
类型转换
static String valueOf(T t):基本数据类型 转 String。static String valueOf(char[] data):char[] 转 String。static String valueOf(char[] data, int offset, int count):c[offset, offset + count) 转 String。char[] toCharArray():String 转 char[]。void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):String 转 char[]。static String format(String format, Object... args):生成指定格式 String。
字符判断
static boolean isDigit(char ch)static boolean isLetter(char ch)static boolean isLetterOrDigit(char ch)static boolean isWhitespace(char ch)static boolean isLowerCase(char ch)static boolean isUpperCase(char ch)static char toLowerCase(char ch)static char toUpperCase(char ch)
数组
| |
变长数组
| |
链表
| |
栈
| |
API 1:
boolean offerLast(E e):向栈顶添加元素。E pollLast():从栈顶删除元素并返回该元素,若栈为空返回 null。E peekLast():返回栈顶元素,若栈为空返回 null。
API 2:
void push(E e):向栈顶添加元素。E pop():从栈顶删除元素并返回该元素,若栈为空抛出java.util.NoSuchElementException。E peek():返回栈顶元素,若栈为空返回 null。
队列
普通队列
| |
boolean offer(E e):添加元素到队尾。E poll():从队头删除元素并返回该元素,若队列为空返回 null。E peek():返回队头元素,若队列为空返回 null。int size():返回队列中元素数量。boolean isEmpty():返回队列是否为空。
| |
双端队列
| |
boolean offerFirst(E e):队首添加元素。boolean offerLast(E e):队尾添加元素。E pollFirst():删除队首元素并返回,若队列为空返回 null。E pollLast():删除队尾元素并返回,若队列为空返回 null。E peekFirst():返回队首元素,若队列为空返回 null。E peekLast():返回队尾元素,若队列为空返回 null。
哈希表
无序哈希表
初始化
| |
添加
V put(K key, V value)- key 存在:覆盖旧值,返回旧值。
- key 不存在:添加元素,返回 null。
| |
V compute(K key, BiFunction<? super K, ? super V,? extends V> remappingFunction)- key 存在:若新值为 null 则删除元素,返回 null;若新值不为 null 则覆盖旧值,返回新值。
- key 不存在:若新值为 null 则返回 null;若新值不为 null 则添加元素,返回新值。
| |
V putIfAbsent(K key, V value)- key 存在:返回旧值。
- key 不存在:添加元素,返回 null。
| |
V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)- key 存在:返回旧值。
- key 不存在:若新值为 null 则返回 null;若新值不为 null 则添加元素,返回新值。
| |
V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)- key 存在:覆盖旧值.
- key 不存在:返回 null。
| |
void putAll(Map<? extends K, ? extends V> m):添加另一个 Map 中的所有元素。
删除
V remove(Object key):删除元素。key 存在则返回旧值;key 不存在则返回 null。void clear():清空 Map。boolean remove(Object key, Object value):删除指定键值对。
查询
V get(Object key):key 存在返回对应的值;key 不存在返回 null。V getOrDefault(Object key, V defaultValue):key 存在返回对应的值;key 不存在返回 defaultValue。boolean containsKey(Object key):是否存在指定 key。boolean containsValue(Object value):是否存在指定 value。int size():大小。boolean isEmpty():是否为空。
遍历
Set<K> keySet():返回所有 key 的集合(非副本)。该集合支持删除元素,不支持添加元素。Set<Map.Entry<K,V>> entrySet():返回所有键值对的集合(非副本)。该集合支持删除元素,不支持添加元素。Collection<V> values():返回所有 value 的集合(非副本)。该集合支持删除元素,不支持添加元素。void forEach(BiConsumer<? super K,? super V> action):增强 for 循环。
| |
速度:
- entrySet > keySet
- 迭代器 > 增强 for 循环
排序
| |
有序哈希表
初始化
TreeMap(Comparator<? super K> comparator):自定义排序规则。
| |
查询
K floorKey(K key):返回最后一个小于等于 key 的键,若无返回 null。K ceilingKey(K key):返回第一个大于等于 key 的键,若无返回 null。K lowerKey(K key):返回最后一个小于 key 的键,若无返回 null。K higherKey(K key):返回第一个大于 key 的键,若无返回 null。K firstKey():返回第一个键,若空抛出java.util.NoSuchElementException。K lastKey():返回最后一个键,若空抛出java.util.NoSuchElementException。Map.Entry<K,V> floorEntry(K key):返回最后一个小于等于 key 的键值对,若无返回 null。Map.Entry<K,V> ceilingEntry(K key):返回第一个大于等于 key 的键值对,若无返回 null。Map.Entry<K,V> higherEntry(K key):返回最后一个小于 key 的键值对,若无返回 null。Map.Entry<K,V> lowerEntry(K key):返回第一个大于 key 的键值对,若无返回 null。Map.Entry<K,V> firstEntry():返回第一个键值对,若空返回 null。Map.Entry<K,V> lastEntry():返回最后一个键值对,若空返回 null。
| |
遍历
NavigableSet<K> descendingKeySet()NavigableMap<K,V> descendingMap()
| |
集合
无序集合
初始化
添加
删除
查询
遍历
排序
有序集合
初始化
TreeSet(Collection<? extends E> c):使用其他容器进行初始化。TreeSet(Comparator<? super E> comparator):自定义排序规则。
| |
查询
E floor(E e):返回最后一个小于等于 e 的元素,若无返回 null。E ceiling(E e):返回第一个大于等于 e 的元素,若无返回 null。E lower(E e):返回最后一个小于 e 的元素,若无返回 null。E higher(E e):返回第一个大于 e 的元素,若无返回 null。E first():返回第一个元素,若无抛出java.util.NoSuchElementException。E last():返回最后一个元素,若无抛出java.util.NoSuchElementException。E pollFirst():删除并返回第一个元素,若无返回 null。E pollLast():删除并返回最后一个元素,若无返回 null。
使用同 TreeMap。
遍历
Iterator<E> descendingIterator()NavigableSet<E> descendingSet()
使用同 TreeMap。
优先队列
常量
| |
类型转换
| |
算法模板
数据规模
getMin 功能的栈
- 两个栈:一个存元素,一个存最小值。最小值可以同步存,也可以不同步。
- 一个栈:捆绑元素和最小值。
| |
两个栈组成队列
| |
用递归函数和栈逆序一个栈
| |
猫狗队列
| |