算法:找出存在子字符串的最先位置28. Implement strStr()
LeetCode全集请参考:LeetCode Github 大全
题目
28. Implement strStr()
Implement strStr()
.
Return the index of the first occurrence of needle
in haystack
, or -1
if needle
is not part of haystack
.
Clarification:
What should we return when needle is an empty string? This is a great question to ask during an interview.
For the purpose of this problem, we will return 0 when needle is an empty string. This is consistent to C’s strstr() and Java’s indexOf().
Example 1:
Input: haystack = "hello", needle = "ll"
Output: 2
Example 2:
Input: haystack = "aaaaa", needle = "bba"
Output: -1
Example 3:
Input: haystack = "", needle = ""
Output: 0
Constraints:
0 <= haystack.length, needle.length <= 5 * 104
haystack and needle consist of only lower-case English characters.
1. 穷举解法
两个for循环匹配即可,这里容易遗漏的点是判断needle是否为空字符串""
, 是的话返回0.
class Solution {public int strStr(String haystack, String needle) {// check nullif (haystack == null && needle == null) {return 0;}if (haystack == null || needle == null) {return -1;}int hlen = haystack.length();int nlen = needle.length();// check ""if (nlen == 0) {return 0;}for(int i = 0; i <= hlen - nlen; i++) {for(int k = 0; k < nlen; k++) {if (haystack.charAt(i + k) != needle.charAt(k)) {break;}if (k == nlen - 1) {return i;}}}return -1;}
}
2. 优雅的写法
假设两个字符串都不为空,可以用下面优雅的写法。
class Solution {public int strStr(String haystack, String needle) {for (int i = 0; ; i++) {for (int k = 0; ; k++) {if (k == needle.length()) return i;if (i + k == haystack.length()) return -1;if (haystack.charAt(i + k) != needle.charAt(k)) break;}}}
}
算法:找出存在子字符串的最先位置28. Implement strStr()相关推荐
- c语言找出公共子字符串,经典C语言面试题:求解最大公共子串
今天去面试,面试官出了一道题,求两个字符串的最大公共子串(Longest Common Substring),一听起来不是很难,但让我在纸上写着写着就迷糊了.回来特地网搜了一下.面试 下面经过两种方法 ...
- 字符串的匹配搜索,在主字符串中搜寻子字符串,并给出此子字符串的起始位置,否则找不到
#include<stdio.h> #include<stdlib.h> int main() {int i, j, temp;char str[100], substr[20 ...
- 找出两个字符串中最长的相同子字符串
//找出两个字符串中最长的相同子字符串public class Stringdemo {public static void main(String[] args) {String str1 = ne ...
- java基础—找出两个字符串中最大的子串
// 找一个字符串的最大子串public static void main(String[] args) {String s1 = "qwerabcdtyuiop";String ...
- 快速找出两个字符串中所有相同的字符
面试时看到一个试题, 编写算法, 快速找出两个字符串中所有相同的字符. 现实现如下: 1. 利用TreeSet来查找是否有相同的字符(之前是利用TreeSet来查找) 2. 利用HashSet来查找是 ...
- 知哈希算法——找出相似的图片
知哈希算法--找出相似的图片 感知哈希算法--找出相似的图片 - Create Chen - 博客园 知哈希算法--找出相似的图片 Google 图片搜索功能 在谷歌图片搜索中, 用户可以上传一张图片 ...
- 找出两个字符串中最大子字符串,如abractyeyt,dgdsaeactyey的最大子串为actyet
// 最大子字符串.cpp : 定义控制台应用程序的入口点. // //找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的 ...
- C语言找出两个字符串唯一不同的一个字符(附完整源码)
C语言找出两个字符串唯一不同的一个字符 C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) C语言找出两个字符串唯一不同的一个字符完整源码(定义,实现,main函数测试) ...
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数...
现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数. 方法1:Hash链表 方法2:使用两个变量A和B,其中A存储某个数组中的数,B用来计数.开始时将B初始化为0 ...
- php判断字符是否在某个数组_php:如何快速在数组array中找出以某字符串开头的值...
我写了个函数,可以实现在数组中找出以某字符串开头的值. public static function arrayContainsValueStartingBy($haystack, $needle) ...
最新文章
- string 日期比较_java8-新的日期API
- 面向对象编程的乐趣(TextBox.Text=)
- 扎心一问:分库分表就能无限扩容吗?
- 学习笔记 Keras:一些基本概念
- Windows环境下配置JDK
- qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...
- 串口通讯你真的会了吗?不妨看看这些经验
- mariadb允许远程访问权限
- linux在当前目录下创建pic目录,在Linux上创建.SO文件而不使用PIC(与位置无关的代码)(x86 32位)...
- 可以发外链的网站_可以发外链的地方有哪些?-top推
- 红帽子服务器怎么重装系统,红帽子RHCS套件安装与配置
- python menu实例_python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例...
- 计算机拆装与维修技能综述,综述虚拟机在计算机硬件组装与维护教学中的应用...
- 推荐几个用于Linux系统的PDF文档查看器
- 假如时光倒流,我会这么学习Java 【转载】
- 计算机硬盘改回基本磁盘,将动态磁盘更改回基本磁盘
- 联手华为,北京联通在北京打造不一样的5G慧生活!
- 硬盘出现坏道以及处理方法
- 立创EDA极速入门(1)——熟悉PCB和立创EDA基本操作
- VB顺序文件案例:简易文本编辑器
热门文章
- php 日志库,这可能是php世界中最好的日志库——monolog
- 嵌套查询和连接查询的效率_LeetCode 查找:groupby+having/嵌套查询/连接
- 详细介绍ASP.NET状态保存方法
- 动态规划——Palindrome Partitioning II
- How to Create and Drop database in MongoDB
- 数据分析 第三篇:数据特征分析(分布分析+帕累托分析)
- Android 工具
- MySQL数据库无法启动的简单排错
- 浅谈C语言中的强符号、弱符号、强引用和弱引用【转】
- python不同目录下的调用