您现在的位置是:首页 > 正文

【力扣经典面试题150道(java)】28. 找出字符串中第一个匹配项的下标 最新发布

2024-04-01 00:34:02阅读 6

文章目录

题目

给你两个字符串 haystackneedle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1

示例 1:

输入:haystack = “sadbutsad”, needle = “sad”
输出:0
解释:“sad” 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。

示例 2:

输入:haystack = “leetcode”, needle = “leeto”
输出:-1
解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1 。

提示:

1 <= haystack.length, needle.length <= 104
haystackneedle 仅由小写英文字符组成

解题思路

(1) 首先判断needle字符串是否长于haystack字符串,如果是,直接return -1
(2) 遍历haystack字符串,找到与needle字符串第一个元素相等的(haystack字符串中的)元素,比较之后的字母是否一致,一致则输出下标;
(3) 如果在(2)中没有输出,则输出-1

代码

class Solution {
    public int strStr(String haystack, String needle) {
        int t1 = haystack.length();
        int t2 = needle.length();
        int same = -1;
        if (t2>t1) //那么needle肯定不是haystack的一部分
            return same;
        else {
            char first_char = needle.charAt(0);
            for (int i=0;i<(t1-t2+1);i++) {
                same = 0;
                if (haystack.charAt(i)==first_char) {//needle首字母在haystack中被找到
                    for (int j=1;j<t2;j++) {// {核对之后的字母是否一致
                        if (haystack.charAt(i+j)!=needle.charAt(j)) {
                            same = -1;
                            break;
                        }
                    }
                    if (same==0) //找到了
                        return i;
                }
            }
            return -1; //没有在以上程序中找到,那么肯定是错误的(这里不要返回same,因为same可能以0结束)
        }    
    }
}

网站文章

  • request的getParameterMap方法

    public class UserServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //解决乱码 reques...

    2024-04-01 00:33:39
  • PC软件CPU高定位示例

    PC软件CPU高定位示例

    WINDOWS PC软件CPU高定位示例。

    2024-04-01 00:33:32
  • 7、volatile

    https://www.cnblogs.com/fengzheng/p/9070268.html并发的三个特性并发场景三个特性:原子性、可见性、有序性;只有在满足了这三个特性,才能保证并发程序正确执行,否则会出现各种问题;1、原子性:cas(乐观锁)和atomic*类,可以保证简单操作的原子性,对于一些负责的操作,可以使用synchronized或者各种锁来实现。2、可...

    2024-04-01 00:33:25
  • vite 移动端项目搭建vue3+ts+vant3

    vite 移动端项目搭建vue3+ts+vant3

    这样在代码保存的时候, eslint就会自动检查并修复。(使用vite官方模板),这里使用的是vue-ts版本。属性,设置该属性后,即可在对应的机型上开启适配。也可以添加到package.json中。...

    2024-04-01 00:33:02
  • Android CardView如何显示出底背景样式?

    Android CardView如何显示出底背景样式?

    <androidx.cardview.widget.CardView android:id="@+id/actionOneCv" android:layout_width="0dp" ...

    2024-04-01 00:32:54
  • c#:grpc初体验

    c#:grpc初体验

    环境: window10x64 企业版 vs2019 16.7.7 .net core3.1 参照: 《ASP.NET Core 3.0 使用gRPC》 《Asp.Net Core Grpc使用C#对...

    2024-04-01 00:32:47
  • django 使用默认django数据库创建数据库

    django 使用默认django数据库创建数据库

    django有默认自带的数据库,当然也可以用其他的数据库,修改数据库的方式也很简单是需要在setting.py修改 DATABASES这里面的参数就可以了 DATABASES = { &#39;def...

    2024-04-01 00:32:21
  • centos boot dvd版本_华为LTE认证考试题库(Word版)

    centos boot dvd版本_华为LTE认证考试题库(Word版)

    资料共计129页,篇幅有限,本文只列举少部分试题。如需要原文档:请关注本公众号,并将本文分享到朋友圈或者是通信群组。分享后添加微信(微信号:tongxinzixun123)领取。这些资料是我从各大通信论坛上面所收集,版权归原作者所有,本号只提供分享,供通信人学习交流用,禁止用于商业等用途,谢谢大家的理解与支持!更多精彩内容,请点击下面链接查看并领取:4G网络优化典型案例(PPT版)5G现...

    2024-04-01 00:32:12
  • 苹果手机无法解析html,苹果手机故障全解析

    苹果手机无法解析html,苹果手机故障全解析

    苹果手机的的故障问题虽然有很多,不过依旧无法阻挡果粉们对它的爱。今天小编就为大家总结和介绍一下苹果手机都有哪些故障和解决办法!手机不像电脑是靠自身散热,大家最直观的感受就是手机操作一会发烫,怎么解决?...

    2024-04-01 00:32:04
  • 什么是美颜SDK?

    什么是美颜SDK?

    首先,美摄美颜SDK拥有丰富的美颜算法库,可以满足用户多样化的美颜需求。再者,它还具备出色的跨平台兼容性,可以轻松集成到各种设备和应用中,无论是手机、相机还是直播平台,都能发挥出其强大的功能。当然,针...

    2024-04-01 00:31:58