`
san_yun
  • 浏览: 2594468 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

String的indexOf实现

阅读更多

今天看了一下String的indexOf实现,其实实现原理不难,先把String转换为char[],然后首先找到target的的第一个字符开始匹配.

    /**
     * 类似String.indexOf(),不过是针对byte array
     * 
     * @param source
     * @param target
     * @return
     */
    public static int indexOf(byte[] source, byte[] target) {
        int sourceCount = source.length;
        int targetCount = target.length;
        byte first = target[0];
        int max = (sourceCount - targetCount);

        for (int i = 0; i <= max; i++) {
            /* Look for first character. */
            if (source[i] != first) {
                while (++i <= max && source[i] != first)
                    ;
            }

            /* Found first character, now look at the rest of v2 */
            if (i <= max) {
                int j = i + 1;
                int end = j + targetCount - 1;
                for (int k = 1; j < end && source[j] == target[k]; j++, k++)
                    ;

                if (j == end) {
                    /* Found whole string. */
                    return i;
                }
            }
        }
        return -1;
    }

 

隐含的问题: 在一个大数组中寻找一个小数组。

分享到:
评论

相关推荐

    算法练习之从String.indexOf的模拟实现开始

    主要介绍了算法练习从String.indexOf的模拟实现开始,需要的朋友可以参考下

    String.indexOf()实现

    public static void main(String[] args) { String haystack = "aaaaasdfasof"; String needle = "df"; char[] hs = haystack.toCharArray(); int hl = hs.length; char[] ns = needle.toCharArray(); int nl ...

    Prototype源码浅析 String部分(一)之有关indexOf优化

    Prototype源码浅析 String部分(一)之有关indexOf优化介绍,需要的朋友可以参考下。

    Android indexOf搜索文件示例.rar

    Android 系统中搜索文件的一个简单例子,功能和Windows搜索文件... if(f.getName().indexOf(keyword)&gt;=0)  {  result =f.getPath() "\n";  }  }  if(result.equals("")) result="找不到文件!!";  return result;

    功能强大的String类源码(C++)

    用C++语言实现的一个功能强大的String类,该类包含对字符串的各种灵活操作,40多个强大的API(CharAt,Length,IndexOf,Replace,Add,Insert,Remove.....), 为学习数据结构的朋友提供了很好的帮助。

    kmp.rar_indexof java_java KMP_kmp java

    给你A,B两个字符串,检查B串是否是A串的子串,类似于Java的String.indexOf("")。找到匹配失败时的最合适的回退位置,而不是简单的回退到子串的第一个字符(常规的枚举查找方式,是简单的回退到子串的第一个字符,KMP...

    Rope 数据结构 C# 实现

    但鉴于 Rope 的实现方式, IndexOf 方法的效率偏低,比直接使用 String.IndexOf 还差些,但最重要的一点,查询时间O 是线性的。 String.IndexOf 确不是。 只是做了简单的测试,大字符串的处理效率还行,不保证没...

    StringJS:Swift中JavaScript字符串API

    StringJS Swift扩展库 一个很小的Swift扩展库,... indexOf(string: String, startFrom: Int = 0) -&gt; Int? lastIndexOf(string: String) -&gt; Int? match(pattern:String) -&gt; Array&lt;String&gt;? replace(what:String, w

    javascript 判断字符串是否包含某字符串及indexOf使用示例

    通过判断指定目录实现广告的显示 代码如下: if(location.href.indexOf(“//www.jb51.net/codes/”)&gt;-1){ alert&#40;‘ok’&#41;; } 代码如下: var Cts = “bblText”; if(Cts.indexOf(“Text”) &gt;= 0 ) { alert&#40;...

    java字符串替换 代码转换相关源码.rar

    java字符转换类代码,可以...  getstr = getstr.substring(0,getstr.indexOf(oldString)) newString getstr.substring(getstr.indexOf(oldString) oldString.length(),getstr.length());   }   return getstr;  }

    .net中string无重复数字的实现方法

    代码如下://string strText = “1334677999”;实现无重复 public static string qu(string lab) { string strResult = string.... intIdx++) { if (strResult.IndexOf(lab.Substring(intIdx, 1)) &lt; 0) { 

    freemarker总结

    item_index:当前变量的索引值 item_has_next:是否存在下一个对象 也可以使用指令跳出迭代 例子如下: ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x&gt; ${x_index + 1}.${x}, ...

    简易实用的JavaMail邮箱程序

    _host = sender.substring(sender.indexOf("@")+1,sender.indexOf(".")); if(MailboxTypes==null){ init(); } _host_ = MailboxTypes.get(_host); // System.out.println(_host+" &lt;--&gt; "+_host_); if...

    CSS实现程序关键字加亮效果

    用CSS实现java C#等程序关键字加亮的效果。 ... return str.substring(str.indexOf(&quot;来自:&quot;)+&quot;来自:&quot;.length()); } } &lt;/body&gt;

    javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法

    Split方法: 以下程序例子实现了split和整数字符串互转的用法。。。 [removed] function evil() { var toint=parseInt(“123”);//字符串转换成整形 var intvalue=123; var tostr=intvalue.toString();//类型转换成...

    JS判断字符串变量是否含有某个字串的实现方法

    if(Cts.indexOf(Text) &gt; 0 ){ alert&#40;'Cts中包含Text字符串'&#41;; } indexOf用法: 返回 String 对象内第一次出现子字符串的字符位置。 strObj.indexOf(subString[, startIndex]) 参数 strObj 必选项。...

    Java实现Excel导入导出

    String.valueOf(item.getStockPrice().multiply(new BigDecimal(item.getStockAmount()))), "01".equals(item.getSalesSource()) ? "线上订单" : "线下订单", item.getGoodsNameAttrs(), String.valueOf(item....

    js 去掉字符串前后空格实现代码集合

    第一种:循环检查替换 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 ... if (whitespace.indexOf(str.charAt(0)) != -1) { var j=0, i = str.length; while

    java发送短信之AT指令

    if (strReturn.indexOf("OK", 0) != -1) { return true; } return false; } catch (Exception ex) { System.gc(); ex.printStackTrace(); return false; } } /** * 封闭COM口 * @return boolean */ ...

Global site tag (gtag.js) - Google Analytics