在本文中记录一下对各种数据类型的操作方法,随着不断刷题持续更新中...
如有错误的地方,请评论区里指正之后会做修改🤗
大厂面试算法,几乎都是手写算法是不带提示的,就算有算法思想解题,还需要知道代码实现嘛。
- String
- 一维数组
- 二维数组
- 链表
- 栈
- Map
- 数学
- 其他
一、对String的操作
1、获取
1.1、获取第i个字符
char str = s.charAt(i);
例:str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符.
1.2、获取字符串长度
int len = s.length();
例:String s = "abc";
int len = s.length();
len=3
1.3、获取字符串长度
String str = s.substring(i,j);
//1.1、String转换数组
char[] charArray = s.toCharArray();
例:String s = "abc";
char[] charArray = s.toCharArray();
charArray --> ["a","b","c"];
2、字符串比较
2.1.1、不忽略字符串大小写情况下字符串的大小比较方法compareTo(another str)
格式:int result = str1.compareTo(str2);
输出三种比较结果:
若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;
若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;
若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。
2.1.2、忽略字符串大小写情况下字符串的大小比较方法compareToIgnoreCase(another str)
格式:int result = str1.compareToIgnoreCase(str2);
在忽略字符串大小写情况下,返回三种比较结果:
输出三种比较结果:若该字符串的Unicode值 < 参数字符串的Unicode值,结果返回一负整数;
若若该字符串的Unicode值 = 参数字符串的Unicode值,结果返回0;
若该字符串的Unicode值 > 参数字符串的Unicode值,结果返回一正整数。
2.2.1、不忽略字符串大小写情况下判别字符串相等的方法eaquals(another str)
格式:boolean result = str1.equals(str2);
当且仅当str1和str2的长度相等,且对应位置字符的Unicode编码完全相等,返回true,否则返回false。
2.2.2、忽略字符串大小写情况下判别字符串相等的方法equalsIgnoreCase(another str)
格式:boolean result = str1.equals(str2);
当且仅当str1和str2的长度相等,且对应位置字符的Unicode编码完全相等,返回true,否则返回false
3、字符串查找
String str = "shi zi bocome handsome like hu ge"; //定义一个长字符串
3.1.1、查找字符出现的位置indexOf()方法
格式:1、str.indexOf(ch);
2、str.indexOf(ch,fromIndex); //包含fromIndex位置
格式1返回指定字符在字符串中第一次出现位置的索引。
格式2返回指定索引位置之后第一次出现该字符的索引号。
int index1 = str.indexOf(" "); //找到第一个空格所在的索引
int index2 = str.indexOf(" ",4); //找到索引4以后的第一个空格所在索引
3.1.2、lastIndexOf()方法
格式:1、str.lastIndexOf(ch);
2、str.lastIndexOf(ch,fromIndex);
格式1返回指定字符在字符串中最后一次出现位置的索引
格式2返回指定索引位置之前最后一次出现该字符的索引号
int index3 = str.lastIndexOf(" "); //找到最后一个空格所在的索引 int index4 = str.lastIndexOf(" ",10);//找到索引10以后的第一个空格所在索引
3.2.1查找字符串出现的位置str.indexOf(str);
格式:1、str.indexOf(str);
2、str.indexOf(str,fromIndex);
格式1返回指定子字符串在字符串中第一次出现位置的索引
格式2返回指定索引位置之前第一次出现该子字符串的索引号
int index5 = str.indexOf("hu"); //找到"hu"子字符串第一次出现位置的索引 int index6 = str.indexOf("hu",5);//找到索引5以后子字符串"hu"第一个出现位置所在索引
3.2.2、lastIndexOf()方法
格式:1、str.lastIndexOf(str);
2、str.lastIndexOf(str,fromIndex);
格式1返回指定子字符串在字符串中最后一次出现位置的索引
格式2返回指定索引位置之前最后一次出现该子字符串的索引号
int index7 = str.lastIndexOf("hu");//子字符串hu最后一次出现位置的索引号 int index8 = str.lastIndexOf("hu",5);//索引号5以后子字符串hu最后一次出现位置的索引号
4、截取与拆分
4.1、截取方法substring()方法
格式1:String result = str.substring(index);//实际索引号[0,index-1]
格式2:String result = str.substring(beginIndex,EndIndex);//实际索引号[beginIndex,EndIndex-1]
结果:截取出范围内的字符串
4.2、拆分方法split()方法
格式1 :String strArray[] = str.split(正则表达式);// 拆分的结果保存到字符串数组中
格式2:String strArray[] = str.split(正则表达式,limit);
String str = "shi zi bocome handsome like hu ge"; //定义一个长字符串
int length = str.length(); //获取字符串长度,保存到变量中 int firstIndex = str.indexOf(' '); //找到第一个空格所在位置 int lastIndex = str.lastIndexOf(' '); //找到最后一个空格所在位置
String firstWord = str.substring(0,firstIndex); //截取出第一个单词 String lastWord = str.substring(lastIndex+1,length);//截取出最后一个单词
String stringArray[] = str.split(" "); //根据空格要求拆分出所有单词保存到字符串数组中
5、替换或修改
String str1 = "vbasic";
String str2 = "Vbasic";
5.1、concat()方法:合并字符串
格式:String result = str1.concat(str2); //将str1和str2合并
String result = str1.concat(str2); // vbasicVbasic
5.2、toLowerCase()方法:将字符全部转化为小写
格式: String result = str.toLowerCase();
String result = str2.toLowerCase();// vbasic
5.3、toUpperCase()方法: 将字符全部转化为大写
格式:String result = str.toUpperCase();
String result = str1.toUpperCase(); // VBASIC
5.4、replaceAll()、replaceFirst()方法:需要匹配正则表达式
String str3 = str1.replaceAll("(?i)VBASIC","Java"); //所有的都替换成Java String str4 = str2.replaceFirst("(?-i)VBASIC","Java");//第一个替换成Java
二、对一维/二维数组的操作(暂停 持续更新中....)
1、数组的声明
String [] arr;
int arr1[];
String[] array=new String[5];
int score[]=new int[3];
2、初始化数组
a、以字面形式指出数组的内容
数组类型 数组名[] = {值1,值2}
//静态初始化
int arr2[]=new int[]{1,2,3,4,5};
String[] array1={"str1","str2","str3"};
String[] array2=new String[]{"str1","str2","str3"};
b、指出数组的大小,在使用new关键字初始化所有的数组元素
数组类型 数组名[] = new 数组类型[常量值];
//动态初始化
int score[]=new int[3];
for(int i=0;i<score.length;i++)
{
score[i]=i+1;
}
获取长度
int[] matrix;
matrix.length
数组转String
String newStr = new String(array, 0, size);
//数组排序
int[] g;
Arrays.sort(g);
Arrays.sort(g,new Comparator(){
public int compare(int a1,int a2) {
return a1 - a2; //升序排列
}
});
//二维数组使用后数字排序
int[][] intervals;
Arrays.sort(intervals,new Comparator(){
public int compare(int [] a1,int [] a2) {
return a1[1] - a2[1]; //升序排列
}
});
//简写
Arrays.sort(points, (a, b) -> a[1] > b[1] ? 1 : -1);
增删改查