13.strStr-字符串查找(容易题)

本文介绍了一个简单的字符串查找问题及其解决方案。通过双指针暴力解法,文章详细解释了如何在一个源字符串中查找目标字符串首次出现的位置。同时,文章还讨论了面试场景下对该问题的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串查找

  1. 题目

    对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。

  2. 说明

    在面试中我是否需要实现KMP算法?

    不需要,当这种问题出现在面试中时,面试官很可能只是想要测试一下你的基础应用能力。当然你需要先跟面试官确认清楚要怎么实现这个题。

  3. 样例

    如果 source = “source” 和 target = “target”,返回 -1。

    如果 source = “abcdabcdefg” 和 target = “bcd”,返回 1。

  4. 题解

    双指针暴力解法。

class Solution {
    /**
     * Returns a index to the first occurrence of target in source,
     * or -1  if target is not part of source.
     * @param source string to be scanned.
     * @param target string containing the sequence of characters to match.
     */
    public int strStr(String source, String target) {
        if (source == null || target == null || source.length() < target.length())
        {
            return -1;
        }
        if (target.length() == 0)
        {
            return 0;
        }
        if (source.length() == 0)
        {
            return -1;
        }

        char[] char_s = source.toCharArray();
        char[] char_t = target.toCharArray();
        for (int i=0;i<=source.length()-target.length();i++)
        {
            if (char_s[i] == char_t[0])
            {
                for (int j=0,s=i;j<target.length();j++,s++)
                {
                    if (char_s[s] != char_t[j])
                    {
                        break;
                    }
                    if (j==target.length()-1)
                    {
                        return i;
                    }
                }
            }
        }
        return -1;
    }
}

Last Update 2016.8.15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值