• 消融
    2019-07-18
    public boolean startsWith(String prefix, int toffset) {
            // Note: toffset might be near -1>>>1.
            if (toffset < 0 || toffset > length() - prefix.length()) {
                return false;
            }
            byte ta[] = value;
            byte pa[] = prefix.value;
            int po = 0;
            int pc = pa.length;
            if (coder() == prefix.coder()) {
                int to = isLatin1() ? toffset : toffset << 1;
                while (po < pc) {
                    if (ta[to++] != pa[po++]) {
                        return false;
                    }
                }
    老师这段中后部看不太懂
    展开

    作者回复: 有前途啊同学,上来就挑战这么有难度的算法。其实字符串查找匹配是一个可以很难的算法,比如算法大神的KMP算法。当然这个算法是用来查找的,startWith相对会简单很多。

    coder 这个方法应该是考虑了编码等情况,因为这里是用的byte数组而非char数组表示的字符串。后面的while循环就是把两个字符串一个个的比较,算法本身的思想不难。如果对这个有兴趣,建议学习一下KMP算法,回头再看startWith就是降维打击了。

    KMP算法可以详细参考:
    http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

    
    
  • 消融
    2019-07-18
    老师那些新方法没有讲,是要我们到javadoc自己找吗,能带着讲下吗

    作者回复: 看着javadoc学习新的方法是软件开发工程师的日常。建议你可以说自己试调用这些方法看看,结果和javadoc对比一下。

    有一些方法超出了本课程的内容,比如正则表达式(regular expression)匹配,正则表达式好难的......

    字符串常用的方法我都提到了,学习新的方法有问题欢迎随时提问

     1
    
我们在线,来聊聊吧