今天看了一下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的模拟实现开始,需要的朋友可以参考下
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优化介绍,需要的朋友可以参考下。
Android 系统中搜索文件的一个简单例子,功能和Windows搜索文件... if(f.getName().indexOf(keyword)>=0) { result =f.getPath() "\n"; } } if(result.equals("")) result="找不到文件!!"; return result;
用C++语言实现的一个功能强大的String类,该类包含对字符串的各种灵活操作,40多个强大的API(CharAt,Length,IndexOf,Replace,Add,Insert,Remove.....), 为学习数据结构的朋友提供了很好的帮助。
给你A,B两个字符串,检查B串是否是A串的子串,类似于Java的String.indexOf("")。找到匹配失败时的最合适的回退位置,而不是简单的回退到子串的第一个字符(常规的枚举查找方式,是简单的回退到子串的第一个字符,KMP...
但鉴于 Rope 的实现方式, IndexOf 方法的效率偏低,比直接使用 String.IndexOf 还差些,但最重要的一点,查询时间O 是线性的。 String.IndexOf 确不是。 只是做了简单的测试,大字符串的处理效率还行,不保证没...
StringJS Swift扩展库 一个很小的Swift扩展库,... indexOf(string: String, startFrom: Int = 0) -> Int? lastIndexOf(string: String) -> Int? match(pattern:String) -> Array<String>? replace(what:String, w
通过判断指定目录实现广告的显示 代码如下: if(location.href.indexOf(“//www.jb51.net/codes/”)>-1){ alert(‘ok’); } 代码如下: var Cts = “bblText”; if(Cts.indexOf(“Text”) >= 0 ) { alert(...
java字符转换类代码,可以... getstr = getstr.substring(0,getstr.indexOf(oldString)) newString getstr.substring(getstr.indexOf(oldString) oldString.length(),getstr.length()); } return getstr; }
代码如下://string strText = “1334677999”;实现无重复 public static string qu(string lab) { string strResult = string.... intIdx++) { if (strResult.IndexOf(lab.Substring(intIdx, 1)) < 0) {
item_index:当前变量的索引值 item_has_next:是否存在下一个对象 也可以使用指令跳出迭代 例子如下: ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x> ${x_index + 1}.${x}, ...
_host = sender.substring(sender.indexOf("@")+1,sender.indexOf(".")); if(MailboxTypes==null){ init(); } _host_ = MailboxTypes.get(_host); // System.out.println(_host+" <--> "+_host_); if...
用CSS实现java C#等程序关键字加亮的效果。 ... return str.substring(str.indexOf("来自:")+"来自:".length()); } } </body>
Split方法: 以下程序例子实现了split和整数字符串互转的用法。。。 [removed] function evil() { var toint=parseInt(“123”);//字符串转换成整形 var intvalue=123; var tostr=intvalue.toString();//类型转换成...
if(Cts.indexOf(Text) > 0 ){ alert('Cts中包含Text字符串'); } indexOf用法: 返回 String 对象内第一次出现子字符串的字符位置。 strObj.indexOf(subString[, startIndex]) 参数 strObj 必选项。...
String.valueOf(item.getStockPrice().multiply(new BigDecimal(item.getStockAmount()))), "01".equals(item.getSalesSource()) ? "线上订单" : "线下订单", item.getGoodsNameAttrs(), String.valueOf(item....
第一种:循环检查替换 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 ... if (whitespace.indexOf(str.charAt(0)) != -1) { var j=0, i = str.length; while
if (strReturn.indexOf("OK", 0) != -1) { return true; } return false; } catch (Exception ex) { System.gc(); ex.printStackTrace(); return false; } } /** * 封闭COM口 * @return boolean */ ...