为了账号安全,请及时绑定邮箱和手机立即绑定

java面试冷知识 string的indexof

标签:
Java

      java中String的玩法还真多,本文介绍的的是indexof这个查找字串的实现。

      说到查找子串,最原始的算法就是先找到第一个字符是匹配的,然后从这个字符串开始往后比对,直到和子串完全匹配。很多人的第一反应肯定是这个算法很low,你起码说个KMP什么的才上档次。所以在很多人印象里java定不会用这么low的算法,就算面试被问到,也不敢这么回答,现在你可以大胆说,如果面试官嘲笑你,请用经典名句:Talk is cheap, show me the code。

        for (int i = sourceOffset + fromIndex; i <= max; i++) {
            //直到找到第一个匹配的字符
            if (source[i] != first) {
                while (++i <= max && source[i] != first);
            }
            //从第一个字符后开始查找
            if (i <= max) {
                //此时i为第一个匹配的字符,j是要开始比对的第二个字符
                int j = i + 1;
                //end是完整匹配最后的字符的位置,targetCount就是子串的长度 
                int end = j + targetCount - 1;
                for (int k = targetOffset + 1; j < end && source[j]
                        == target[k]; j++, k++);
                if (j == end) {
                    //此时查找到,返回结果位置
                    return i - sourceOffset;
                }
            }
        }

      经过验证,1.6,1.7,1.8都是这么实现的。这几个版本的回答不需要犹豫。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1.6万
获赞与收藏
380

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消