StringBuilderLastIndexOf和IndexOf

Posted lvgj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StringBuilderLastIndexOf和IndexOf相关的知识,希望对你有一定的参考价值。

StringBuilder、LastIndexOf和IndexOf

  • 首先是StringBuilder,再学习leetcode中使用的最多的是sb.append()sb.reverse()以及sb.toString()其中sb.reverse().toString()经常连用

题目:686. 重复叠加字符串匹配

给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。

举个例子,A = "abcd",B = "cdabcdab"。

答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。

  • 在本题中用到了谁是谁的子字符串的问题,我一开始想的是使用charAt(index)这个方法逐个比较字符来判断是否在A中存在B

  • 在本题中学会了使用sb.LastIndexOf这个函数,通过这个函数,可以很方便的查看A中是否有B,如果没有就直接返回-1,因此此题就变得简单了。

    public class Solution686 {
        public int repeatedStringMatch(String A, String B) {
            int i =1;
            StringBuilder sb = new StringBuilder();
            sb.append(A);
            int blength = B.length();
            //该循环是为了让sb成为超过或者等于B的长度的字符串
            while(sb.length()<blength){
                sb.append(A);
                i++;
            }
            //然后查看sb中是否存在,倘若sb中不存在,那么sb再拼接上一个A能不能行
            //如果还不行,就代表不能成为子字符串
            return sb.indexOf(B)==-1?(sb.append(A).indexOf(B)==-1?-1:i+1):i;
        }
    }

以上是关于StringBuilderLastIndexOf和IndexOf的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理