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

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 index out of 4解决方法

    ### String index out of 4解决方法 在编程中,尤其是使用Java进行字符串处理时,经常会遇到`StringIndexOutOfBoundsException`异常。这种异常通常发生在试图访问一个不存在的字符串索引时。例如,如果尝试访问一个...

    JavaScript的indexOf忽略大小写

    为了实现`indexOf`函数忽略大小写的功能,我们可以采取两种基本策略: 1. **转换大小写**:将目标字符串和待查找的子字符串都转换为统一的大写或小写,然后进行比较。 2. **自定义实现**:通过正则表达式或自定义...

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

    通过模拟 `String.indexOf()` 的实现,我们可以更好地理解其工作原理,并且在设计自己的字符串处理函数时有更清晰的思路。同时,这也是一种很好的算法训练,有助于提升编程能力。在实际开发中,根据具体需求和性能...

    java String类的实现

    - `indexOf(String str)`:查找子字符串第一次出现的位置。 - `contains(CharSequence s)`:检查字符串是否包含指定的子字符串。 - `replace(char oldChar, char newChar)`:替换所有出现的旧字符为新字符。 - `...

    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框架在字符串操作方面的源码,特别是对indexOf方法的优化实现。 首先,文章提到Prototype通过扩展String的原型(String.prototype),添加了一系列字符串处理方法。这些方法大致可以分为几...

    js中indexof的用法详细解析.docx

    JavaScript 本身没有提供直接查找多个字符的方法,但可以通过循环或数组的 `indexOf` 来实现。 ```javascript let str = "Hello, World!"; let charsToFind = ['o', 'r', 'l', 'd']; for (let char of charsToFind)...

    C# String 查找

    除了直接使用`IndexOf()`外,还可以采用替换的方式来间接实现查找。这种方法适用于需要替换特定字符或子字符串的场景。示例代码如下: ```csharp string returnStr = string.Empty; returnStr = str.Replace("DD11EF...

    Android indexOf搜索文件示例.rar

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

    Java面试+笔试题集

    抽象方法是为了提供一个模板供子类实现,而静态方法与类关联而非特定对象,因此抽象方法不能是静态的。如果一个方法同时声明为抽象和静态,则会导致编译错误。 ##### 3. 父类引用指向子类实例时的多态性 题目描述...

    String对象常用的属性的方法

    - **语法**:`string.indexOf(searchValue[, fromIndex])` - **参数**: - `searchValue`:要搜索的字符串值。 - `fromIndex`:可选,规定在字符串中开始搜索的位置。 **示例**: ```javascript var x = ...

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

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

    String.indexOf 方法介绍

    `String.indexOf`方法是Java和JavaScript等编程语言中处理字符串时非常常用的一个功能,用于查找一个子字符串在原字符串中首次出现的位置。这个方法对于文本分析、数据处理以及字符串操作等场景都至关重要。 方法的...

    python,Java,JavaScript实现indexOf

    public static int indexOf(String orgin, String serachString) { char[] chars = orgin.toCharArray(); char[] sChars = serachString.toCharArray(); int index = -1; int s_index = 0; int move = 0; ...

    java中String_十六进制String_byte[]之间相互转换

    baos.write((hexString.indexOf(hexString.charAt(i)) | hexString.indexOf(hexString.charAt(i + 1)))); } return baos.toByteArray(); } ``` 这段代码首先创建一个`ByteArrayOutputStream`对象用于存放结果,...

    js中indexOf与search的区别.docx

    - 当需要查找具有特定特征的字符串(如以某个字符开头且后面跟数字的字符串)时,`indexOf()`方法无法实现,此时需要使用正则表达式和`search()`方法。 3. **应用场景:** - 大多数情况下,使用`indexOf()`方法是...

    C#中String类常用方法汇总

    9. `.IndexOf(char c)` 和 `.IndexOf(string str)` 这两个方法用于查找字符或子字符串在字符串中的位置,返回其索引,找不到则返回 -1。 ```csharp string str = "Hello, World!"; int commaIndex = str.IndexOf...

    String类的方法

    `indexOf(int ch)` 和 `indexOf(int ch, int fromIndex)` - **功能**:返回指定字符在此字符串中首次出现的索引;如果未找到,则返回 -1。第二个版本的 `indexOf` 方法允许从特定索引开始搜索。 - **示例**: ```...

    javascript的indexOf忽略大小写的方法

    String.prototype._indexOf = String.prototype.indexOf; String.prototype.indexOf = function() { if (typeof(arguments[arguments.length - 1]) != 'boolean') return this._indexOf.apply(this, arguments); ...

Global site tag (gtag.js) - Google Analytics