接下来分享一个简单的java力扣题


问题描述

给定两个字符串A和B,设定B是A的子串,编写方法来求出B最初出现的位置。
比如: A=“middleeea”, B=“dd”. 返回值应该是2.

当A中不存在B或者B比A长的时候,返回-1。
比如: A=“hello” ,B=“aa” 或者 A=“bulls” ,B=“bullsaqesc”. 这两种情况返回值都是-1。

代码如下:

public static int findStr(String s1, String s2){int L = s2.length();int n = s1.length();for(int start = 0;start<n-L+1;start++){if(s1.substring(start,start+L).equals(s2)){return start;}}return -1;}

这个题目的思路很简单:方法接收两个字符串,分别用变量L和n接收两个字符串的长度,随后做一个遍历,这里循环条件的设定是,自增变量start小于字符串s1的长度减去s2的长度+1(可以把s2想象成窗口在s1上滑动)。而s1一旦从start处开始往后的s2长度个字符的子串等于s2,则找到了匹配,此时返回start作为索引值。遍历完字串没有找到匹配则返回-1。
测试案例:

public static void main(String[] args) {String s1 = "bullock";String s2 = "llo";int index = findStr(s1, s2);System.out.println(index);}

结果得到:

返回-1的测试组

以下两个测试组均返回-1

public static void main(String[] args) {String s1 = "bullock";String s2 = "abc";int index1 = findStr(s1, s2);System.out.println(index1);String s3 ="aabbccd";String s4 ="bbccddadadds";int index2 = findStr(s3, s4);System.out.println(index2);}


这个案例的核心就是一个滑动窗口的思路。需要思考的一点是,当作为子串的s2为空时,返回值应该是多少呢。
依旧用上述的代码完成测试:

public static void main(String[] args) {String s1 = "bullock";String s2 = "";int index = findStr(s1, s2);System.out.println(index);}

结果如下:

可以看到,返回结果是0,这一点与Java中String类indexOf()方法的定义是相符的。

Java算法题---查找子串的出现位置相关推荐

  1. 我整理了50道经典Java算法题,直接进了字节跳动!!

    写在前面 最近,很多小伙伴都想进入字节跳动这个快速发展的公司,而字节跳动对于算法的要求比较高.于是乎,有些小伙伴问我能否整理一些基础的算法题,帮助他们提升下基础算法能力.我:没问题啊!于是,经过半个多 ...

  2. 悲哀!面试现场,简单几道java算法题,90%程序员没写出来

    这两天小编逛论坛的时候发现一个很有意思的事情,就是一位互联网公司的面试官分享的,他们最近想招一批java的实习生,所以他们的面试题并不难,但是前来面试的人,却很多都挂在了几道算法题上,要么就是逻辑不严 ...

  3. Java算法题:Z字形变换

    Java算法题:Z字形变换 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行 ...

  4. 惊!面试现场,简单几道java算法题,90%程序员没写出来

    近几个月很多大学实习生离校找实习工作去了,本以为自己很值钱,实际上发现自己并不值钱,想象着自己能赚很多钱了,结果只能拿到一点微薄的工资,很多人会怪公司给的少,但是你有没有想过,你自己的技术值多少钱?你 ...

  5. 【Java算法题】剑指offer_数据结构之03队列栈

    前言 刷题链接: https://www.nowcoder.com/exam/oj/ta?page=2&tpId=13&type=265 原定于5.30写完队列&栈,超时了14 ...

  6. 中软国际Java机试,阿里Java算法题

    拼多多三面惨败,java中间件.数据库与spring框架,答不上- 面试开火箭,工作拧螺丝-月初有个朋友面试拼多多,一面自信满满过了,结果三面却惨败-昨天朋友约我出来讨论问题在哪里,三面就答不上了(卡 ...

  7. Java 算法题 一

    /** *//**父子俩的年龄:父亲今年30岁,儿子今年6岁,问多少年后父亲的年龄是儿子年龄的2倍.*/ package exec; public class Age { public static ...

  8. 【java算法题大全】设计一个抽奖程序,要求已经抽过的不能再抽,可以自定义参加抽奖人数以及奖品

    1.首先我们先看一下这道题的思路 2.设计程序 3.进行main方法测试,直接调用我们设计的程序方法 4.查看测试结果 5.知识点详解 1.Scanner : java.util.Scanner 是 ...

  9. Java算法 -- 二分查找:查找目标元素最左的位置和最右的位置、局部最小值问题求解

    1. 二分查找 二分查找也是一种在数组中查找数据的算法.它只能查找已经排好序的数据.二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边.因此,比较一次就可以把查找范 ...

最新文章

  1. epub格式电子书剖析之三:NCX文件构成
  2. Vue项目中遇到了大文件分片上传的问题
  3. 黑客攻防技术宝典Web实战篇第2版—第10章 测试后端组件
  4. CSS3:伪类前的冒号和两个冒号区别
  5. 2006年最值得期待的十种技术
  6. 5.1数学建模与MATLAB--层次分析法(评价类问题)
  7. FileInputStreamFileOutputStream 和 BufferedInputStreamBufferedOutputStrem的性能测试小案例
  8. 现代心理与教育统计学 第一章
  9. php 分段mp4合并,下载一个特殊的m3u8视频并合并为MP4
  10. SX1278超时设置与计算
  11. 一千座5G工厂的花苞
  12. Proteus8.9 VSM Studio SDCC编译器仿真STC15W4K32S4系列013_iic_03_AT24C08
  13. 用日记APP来记录生活,再也不用担心无法坚持写日记
  14. cad命令栏怎么调出来_软件CAD | 基本操作逻辑
  15. 先学python还是ros_如何学习Ros?
  16. DPVS适配Mellanox-25G/100G网卡
  17. photoshop博客_在Photoshop中设计优雅的博客布局
  18. Python项目实战(三):爬取东方财富热门股票数据
  19. thinkpad t460p重量
  20. python抢票代码_如何使用python爬取抢票?

热门文章

  1. vue 的 带着参数跳转 转载(http://blog.csdn.net/wy01272454/article/details/77869442?locationNum=7fps=1)
  2. 趣头条、趣键盘下架!“噱头营销”的新闻类App或面临流量天花板!
  3. word页眉横线去除方法
  4. 2017年阿里巴巴实习生招聘笔试
  5. 一次搞懂Webpack Loader
  6. python模型预测_【超级干货!】教你用Python做回归模型预测房价
  7. UE4 拔出武器动画无法播放,角色原地播放walkstart ,walkstop,无法移动
  8. 【Linux】零成本在家搭建自己的私人服务器解决方案
  9. Mac屏幕截图进阶教程,你不知道的隐藏小功能
  10. lisp源码 微盘,AutoLISP - 源码下载|Windows编程|其他小程序|源代码 - 源码中国