StringBuilder、LastIndexOf和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;
        }
    }

猜你喜欢

转载自www.cnblogs.com/lvgj/p/12497448.html