算法题中常用方法

54 阅读4分钟

今天在写算法题的时候发现,由于过于依赖idea编译器,导致忘记常用的数据的方法和基本数据类型转换,故写了这篇文章,给以后自己刷算法提供便利。

Java 基础核心知识点(算法题高频)

一、Java 8 种基本类型

基本类型无成员方法,需通过包装类调用方法。重点记忆 “类型名 ↔ 包装类” 及核心用途,避免int直接调用toString()的错误。

基本类型对应的包装类默认值占用空间核心用途
byteByte01 字节字节流、节省内存(少用)
shortShort02 字节同上,比byte范围大(少用)
intInteger04 字节算法题默认整数类型(优先用)
longLong0L8 字节大整数(需加后缀L,如100L
floatFloat0.0f4 字节单精度浮点数(少用,精度低)
doubleDouble0.0d8 字节浮点数默认类型(如3.14
charCharacter'\u0000'2 字节单个字符(如'a''1'
booleanBooleanfalse1 位(不确定)逻辑判断(true/false

二、数组创建(3 种核心场景)

数组是 “固定长度的同类型容器”,创建时需指定长度或初始化元素(长度不可变),常见于算法题中的 “线性结构”“矩阵” 场景。

1. 一维数组(最常用)

数组类型动态初始化(先指定长度,后赋值)静态初始化(直接赋值,长度自动计算)
int数组java int[] arr = new int[5];java int[] arr = new int[]{1,2,3};
(初始值:int默认0(简化写法:int[] arr = {1,2,3};,需一行写完)
String数组java String[] arr = new String[3];java String[] arr = {"a","b","c"};
char数组java char[] arr = new char[4];java char[] arr = {'h','e','l','l','o'};

2. 二维数组(矩阵场景用)

可理解为 “数组的数组”,适用于二维矩阵、表格类题目:

java

运行

// 动态初始化1:3行2列(每行长度固定)
int[][] matrix = new int[3][2]; 

// 动态初始化2:3行,每行长度不固定(后续赋值)
int[][] matrix = new int[3][]; 
matrix[0] = new int[]{1,2}; // 第0行长度2
matrix[1] = new int[]{3};   // 第1行长度1

// 静态初始化:直接赋值所有元素(推荐,清晰)
int[][] matrix = {{1,2},{3,4},{5,6}}; 

3. 数组核心注意点

  • 长度获取:一维数组用arr.length;二维数组用matrix.length(行数)、matrix[0].length(第 0 行的列数)。
  • 相等比较:数组无equals()方法,需用Arrays.equals(arr1, arr2)(需导包import java.util.Arrays;),比较 “元素是否完全相同”。
  • 默认值:基本类型数组默认对应基本类型的默认值(如int数组默认0);引用类型数组(如String[])默认null

三、高频常用方法(按 “类” 整理,算法题必记)

按 “包装类→数组工具→String” 分类,记清 “方法名 + 用途 + 调用方式”(静态方法用 “类名。方法”,实例方法用 “对象。方法”)。

1. 基本类型包装类的常用方法(以IntegerCharacter为例)

类名方法名用途示例
Integerstatic String toString(int x)int转成StringInteger.toString(123) → "123"
static int parseInt(String s)String转成int(需s是数字格式)Integer.parseInt("123") → 123
static Integer valueOf(int x)int转成Integer对象(装箱)Integer.valueOf(123) → Integer对象
Characterstatic boolean isDigit(char c)判断字符是否是数字(0-9)Character.isDigit('5') → true
static boolean isLetter(char c)判断字符是否是字母(a-z/A-Z)Character.isLetter('a') → true
static char toLowerCase(char c)字符转小写Character.toLowerCase('A') → 'a'

提示:LongDouble用法类似,如Long.toString(123L)Double.parseDouble("3.14")

2. 数组工具类 Arrays(需导包import java.util.Arrays;

算法题操作数组的核心工具类,记 3 个高频方法:

方法名用途示例
static void sort(int[] arr)对数组升序排序(直接修改原数组)java int[] arr={3,1,2}; Arrays.sort(arr); → [1,2,3]
static boolean equals(int[] a, int[] b)比较两个数组的元素是否完全相同Arrays.equals({1,2},{1,2}) → true
static String toString(int[] arr)把数组转成String(方便打印调试)Arrays.toString({1,2}) → "[1,2]"

3. String 类常用方法(字符串操作必记)

算法题中处理字符串(如回文数、字符串反转)高频用到,记 6 个核心方法:

方法名用途示例
int length()获取字符串长度(字符个数)"abc".length() → 3
char charAt(int index)获取指定索引的字符(索引从 0 开始)"abc".charAt(1) → 'b'
boolean equals(String s)比较两个字符串的内容是否相同(区分大小写)"abc".equals("ABC") → false
String substring(int start, int end)截取子串([start, end),左闭右开)"abcde".substring(1,3) → "bc"
char[] toCharArray()把字符串转成char数组(方便遍历字符)"abc".toCharArray() → {'a','b','c'}
static String valueOf(int x)把基本类型转成String(同Integer.toStringString.valueOf(123) → "123"

关键提醒:

  • String不可变的s += "a"会创建新字符串,而非修改原字符串;
  • 比较内容用equals(),不要用====比较地址,不是内容)。

四、记忆小技巧

  1. 场景绑定法:记 “需求→方法”,如 “int 转 String”→Integer.toString(x);“排序数组”→Arrays.sort(arr);“取字符串某字符”→charAt(index)
  2. 强制手写练习:写代码时先手动敲完方法名(如Arrays.equals),错了再修正,避免依赖提示。
  3. 简化小抄:将核心方法整理成短句(如 “int 转 String:Integer.toString”“数组排序:Arrays.sort”),算法题前看 1 分钟强化记忆。