0
点赞
收藏
分享

微信扫一扫

Leetcode每日一题(2022.2.2)

快乐小鱼儿_9911 2022-02-02 阅读 70
leetcode

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfMzI0Njg2MDM=,size_20,color_FFFFFF,t_70,g_se,x_16

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

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfMzI0Njg2MDM=,size_20,color_FFFFFF,t_70,g_se,x_16

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



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

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfMzI0Njg2MDM=,size_12,color_FFFFFF,t_70,g_se,x_16

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

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfMzI0Njg2MDM=,size_20,color_FFFFFF,t_70,g_se,x_16

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

回到那个用户的代码

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

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

题外话:


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


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

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP6ZWH5YGa6aKY5a6277yITG9zZXLvvIk=,size_14,color_FFFFFF,t_70,g_se,x_16

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

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

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

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

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

举报

相关推荐

0 条评论