和你一起刷算法-LeetCode中参数操作方法总结(持续更新...)

在本文中记录一下对各种数据类型的操作方法,随着不断刷题持续更新中...

如有错误的地方,请评论区里指正之后会做修改🤗

大厂面试算法,几乎都是手写算法是不带提示的,就算有算法思想解题,还需要知道代码实现嘛。

  1. String 
  2. 一维数组
  3. 二维数组
  4. 链表
  5. Map
  6. 数学
  7. 其他

一、对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);

 

增删改查

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值