Leetcode每日一题(2022.2.2)
作者:互联网
评论代码分析(自己写的太烂了):
这个用户通过String的indexOf方法得到下标
int indexOf(int ch)
为什么形参是(int ch)呢?我以为是(char ch),既然不懂,就看源代码:
原来是得到char的Ascll码,然后调用
接下来这些就是indexOf查找相应子串的核心了。尝试看一下,没看懂,应该是技术还没到家,先不管他。
回到那个用户的代码
得到下标之后,对他进行判断,如果字符串中不包含该子串,通过indexOf得到的整形就是-1。这里的判断筛选是否存在子串。
之后创建StringBuilder对象,通过带参的构造方法得到一个StringBuilder对象
StringBuilder(String str)
构造一个初始化为指定字符串内容的字符串构建器。
题外话:
我们都知道,可变字符串有两种,一个是StringBuffer,一个是StringBuilder,因为StringBuffer才用了同步锁,所以在线程安全方面来说,我个人习惯来说都是会使用StringBuffer。
在看带参构造方法里面String的substring方法
给一个参数,截取就是从给的参数开始,到最后,这个子串。
给两个参数,就是截取从参数1到参数2之间(包含)的子串,这里通过substring得到了需要反转的子串,然后通过StringBuilder的带参构造得到了需要反转的StringBuilder对象,就可以直接通过StringBuilder的reverse()方法进行反转(怎么反转已经写好了)。
在然后通过StringBuilder的append()方法,将两个字符串拼接起来。
append()方法是将参数拼接到调用这个参数的StringBuilder对象后面,这样就完成了字符串的指定子串反转。
之后在调用StringBuilder的toString()方法将StringBuilder对象转换成String对象返回即可完成题目
标签:子串,String,indexOf,StringBuilder,每日,参数,字符串,2022.2,Leetcode 来源: https://blog.csdn.net/qq_32468603/article/details/122771575