LeetCode Implement strStr()
2015-09-20 05:19
429 查看
原题链接在这里:https://leetcode.com/problems/implement-strstr/
原来Java里有这么个API, str.indexOf(subString). 这是API的用法:http://www.tutorialspoint.com/java/java_string_indexof.htm
AC Java:
Brute force的算法是从haystack头开始走,每次取后面长度与needle长度相等的substring, 看这个substring与needle是否相同即可。
AC Java:
还可以用HashCode来唯一代表一段字符串,方法参见了这篇帖子:/article/1378346.html
e.g.字符串“abacd",转化为hashcode=1*29^0+2*29+1*29^2+3*29^3+4*29^4。然后是如何在前进一步的时候计算新的hashcode,比如匹配串是原串是”abacde“,匹配串长度为5, 根据以上的方法计算”abacd“的hashcode=h,那么下一步的hashcode=h/29+5*29^4即可。但这种方法算29的最高次幂是needle的长度,即使用了long
也会爆缸。
本题还可以采用KMP算法,参见如下两篇文章:
/article/1362918.html
http://blog.csdn.net/Evan123mg/article/details/46834827
原来Java里有这么个API, str.indexOf(subString). 这是API的用法:http://www.tutorialspoint.com/java/java_string_indexof.htm
AC Java:
public class Solution { public int strStr(String haystack, String needle) { return haystack.indexOf(needle); } }
Brute force的算法是从haystack头开始走,每次取后面长度与needle长度相等的substring, 看这个substring与needle是否相同即可。
AC Java:
public class Solution { public int strStr(String haystack, String needle) { if(haystack == null || needle == null || haystack.length() < needle.length()){ return -1; } if(needle.length() == 0 && haystack.length() == 0){ return 0; } for(int i = 0; i+needle.length()<=haystack.length(); i++){ if(haystack.substring(i,i+needle.length()).equals(needle)){ return i; } } return -1; } }
还可以用HashCode来唯一代表一段字符串,方法参见了这篇帖子:/article/1378346.html
e.g.字符串“abacd",转化为hashcode=1*29^0+2*29+1*29^2+3*29^3+4*29^4。然后是如何在前进一步的时候计算新的hashcode,比如匹配串是原串是”abacde“,匹配串长度为5, 根据以上的方法计算”abacd“的hashcode=h,那么下一步的hashcode=h/29+5*29^4即可。但这种方法算29的最高次幂是needle的长度,即使用了long
也会爆缸。
本题还可以采用KMP算法,参见如下两篇文章:
/article/1362918.html
http://blog.csdn.net/Evan123mg/article/details/46834827
相关文章推荐
- LeetCode Implement strStr()
- Ember.js 入门指南——{{action}} 助手
- Ember.js 入门指南——{{action}} 助手
- LeetCode "Move Zeroes"
- html标签认识的一些查漏补缺
- Mahout推荐的简单实现
- ajax提交数组
- 学习心得
- FMDB数据库
- 我现在对Git的认识
- office安装不了 “windows installer 服务不能更新一个或多个受保护的windows文件”
- FlushMode属性与transaction(spring注入的事务)
- 事务的特性..
- 我的感想
- IDEA 13、14 配合 gradle 时候无法正确编译资源文件的 bug
- 条款37:绝不重新定义继承而来的缺省参数值
- 分析Hibernate的事务处理机制
- 为什么hibernate需要事务?
- Unique Paths II 解答
- Socket原理