Leetcode每日一题(2022.2.2)

Leetcode每日一题(2022.2.2)

 评论代码分析(自己写的太烂了):

Leetcode每日一题(2022.2.2)

 这个用户通过String的indexOf方法得到下标


int indexOf(int ch)


为什么形参是(int ch)呢?我以为是(char ch),既然不懂,就看源代码:

Leetcode每日一题(2022.2.2)

 原来是得到char的Ascll码,然后调用

Leetcode每日一题(2022.2.2)

 接下来这些就是indexOf查找相应子串的核心了。尝试看一下,没看懂,应该是技术还没到家,先不管他。

回到那个用户的代码

得到下标之后,对他进行判断,如果字符串中不包含该子串,通过indexOf得到的整形就是-1。这里的判断筛选是否存在子串。

之后创建StringBuilder对象,通过带参的构造方法得到一个StringBuilder对象

StringBuilder(String str) 
构造一个初始化为指定字符串内容的字符串构建器。

题外话:


我们都知道,可变字符串有两种,一个是StringBuffer,一个是StringBuilder,因为StringBuffer才用了同步锁,所以在线程安全方面来说,我个人习惯来说都是会使用StringBuffer。


在看带参构造方法里面String的substring方法

Leetcode每日一题(2022.2.2)

 给一个参数,截取就是从给的参数开始,到最后,这个子串。

给两个参数,就是截取从参数1到参数2之间(包含)的子串,这里通过substring得到了需要反转的子串,然后通过StringBuilder的带参构造得到了需要反转的StringBuilder对象,就可以直接通过StringBuilder的reverse()方法进行反转(怎么反转已经写好了)。

在然后通过StringBuilder的append()方法,将两个字符串拼接起来。

append()方法是将参数拼接到调用这个参数的StringBuilder对象后面,这样就完成了字符串的指定子串反转。

之后在调用StringBuilder的toString()方法将StringBuilder对象转换成String对象返回即可完成题目

上一篇:14.String相关,转换,StringBuilder,StringJoiner,String.join()


下一篇:HTML5 基础