博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串查找String.IndexOf
阅读量:6428 次
发布时间:2019-06-23

本文共 1828 字,大约阅读时间需要 6 分钟。

String.indexOf的模拟实现,没想象中有多么高深的查找算法,就是最普通的遍历查找

思路:先找到第一个相同的字符,然后依次比较后面的字符,若都相等则表示查找成功

/**     * 查找字符串pattern在str中第一次出现的位置     * @param str     * @param pattern     * @return     */    public int firstIndexOf(String str, String pattern) {        for (int i = 0; i < (str.length() - pattern.length()); i++) {            int j = 0;            while (j < pattern.length()) {                if (str.charAt(i + j) != pattern.charAt(j)) break;                j++;            }            if(j==pattern.length()) return  i;        }        return -1;    }    /**     * 查找字符串pattern在str中最后一次出现的位置     * @param str     * @param pattern     * @return     */    public int lastIndexOf(String str, String pattern) {        for (int i = str.length() - pattern.length(); i >= 0; i--) {            int j = 0;            while (j < pattern.length()) {                if (str.charAt(i + j) != pattern.charAt(j)) break;                j++;            }            if (j == pattern.length()) return i;        }        return -1;    }    /**     * 查找字符串pattern在str中出现的位置     * @param str     * @param pattern     * @return     */    public List
indexOf(String str, String pattern) { List
indexs = new ArrayList
(); for (int i = 0; i < (str.length() - pattern.length()); i++) { int j = 0; while (j < pattern.length()) { if (str.charAt(i + j) != pattern.charAt(j)) break; j++; } if (j == pattern.length()) indexs.add(i); } return indexs; }

同样更常用的String.contains方法实际上就是调用的String.indexOf实现

/**     * 判断字符串pattern在str中是否存在     * @param str     * @param pattern     * @return     */    public boolean contains(String str, String pattern) {        return firstIndexOf(str, pattern) != -1;    }

 

转载地址:http://dwnga.baihongyu.com/

你可能感兴趣的文章
后续更新 | 减少使用非 SDK 接口以提升稳定性
查看>>
如何优化UPS的工作模式为数据中心节省运营成本
查看>>
luogu_P3674 小清新人渣的本愿
查看>>
[bzoj 3110][zjoi 2013]K大数查询
查看>>
luogu_P3345[zjoi2015]幻想乡战略游戏
查看>>
Hibernate 二级缓存
查看>>
Kettle应用实例
查看>>
week03-栈和队列
查看>>
c语言洗牌算法
查看>>
自动化测试基础篇--Selenium文件上传send_keys
查看>>
分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace【转】
查看>>
ARM 处理器架构【转】
查看>>
QQ初始化失败,很多网站访问不了 的解决
查看>>
深入理解[代理模式]原理与技术
查看>>
LeetCode OJ:Evaluate Reverse Polish Notation(逆波兰表示法的计算器)
查看>>
关于Qt的事件循环以及QEventLoop的简单使用
查看>>
Mac下安装pymssql
查看>>
AlertDialog基本用法详解
查看>>
《人月神话》读书摘记
查看>>
将Gridview导出到Excel
查看>>