1. 找出字符串中第一个匹配项的下标
    中等
    1.6K
    相关企业
    给你两个字符串 haystack 和 needle ,请你在 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
haystack 和 needle 仅由小写英文字符组成

题解

这种类型的题目很常见,标准算法应该是KMP匹配,但是KMP代码太长了,换个简单轻松点的,直接把字符串编码成数字匹配即可。

AC代码

class Solution {public:typedef long long ll;ll mod = 1e14+7;int strStr(string haystack, string needle) {int n = needle.length();ll sum = 0;ll base = 1;for(int i=n-1;i>=0;i--){sum += (haystack[i]-'a') * base;base *= 26;sum %= mod;base %= mod;}ll sum1 = 0;base = 1;for(int i=n-1;i>=0;i--){sum1 += (needle[i]-'a')*base;base *= 26;sum1 %= mod;base %= mod;}base = 1;for(int i=1;i<n;i++){base *= 26;base %= mod;}if(sum1 == sum)return 0;for(int i=n;i<haystack.length();i++){sum = sum + mod - (haystack[i-n]-'a')*base;sum *= 26;sum += haystack[i]-'a';sum = (sum + mod)%mod;if(sum == sum1)return i-n+1;}return -1;}
};

LeetCode 28. 找出字符串中第一个匹配项的下标 -- 字符串编码成数字匹配相关推荐

  1. LeetCode 2108. 找出数组中的第一个回文字符串

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 .如果不存在满足要求的字符串,返回一个 空字符串 "" . 回 ...

  2. LeetCode 1394. 找出数组中的幸运数(map计数)

    文章目录 1. 题目 2. 解题 2.1 map计数 2.2 Python3解 1. 题目 在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」. 给你一个整数数组 a ...

  3. LeetCode 1985. 找出数组中的第 K 大整数(排序)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串数组 nums 和一个整数 k . nums 中的每个字符串都表示一个不含前导零的整数. 返回 nums 中表示第 k 大整数的字符串. 注 ...

  4. 找出数组中其中最大的数及其下标

    1.在一个有8个整数(18,25,7,36,13,2,89,63)的数组中找出其中最大的数及其下标. 代码如下: public static void main(String[] args) {int ...

  5. LeetCode 2150. 找出数组中的所有孤独数字(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums .如果数字 x 在数组中仅出现 一次 ,且没有 相邻 数字(即,x + 1 和 x - 1)出现在数组中,则认为数字 x 是 ...

  6. LeetCode 2200. 找出数组中的所有 K 近邻下标

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums 和两个整数 key 和 k . K 近邻下标 是 nums 中的一个下标 i ,并满足至少存在一个下标 j ...

  7. Java 找到并返回一组字符串中第一个不为空的字符串

    public static String coalesce(String ... ss) {String result = null;for(int i = 0; i<ss.length;i++ ...

  8. 28.找出字符串中第一个匹配项的下标

    28.找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始).如果 ...

  9. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串

    剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...

最新文章

  1. pyssdeep模块
  2. 服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
  3. 跨站点脚本(XSS)
  4. 互联网人才流向说明了什么
  5. 5G赋能中国智慧教育
  6. django请求生命周期
  7. Java基础面试题:AQS组件总结
  8. 《Effective Java 3rd》读书笔记——对于所有对象都通用的方法
  9. HTML5的绘画支持(五)
  10. pcb文件转成原理图_电子设计基础教学-PCB板制作之 AD(Altium Designer)的工程建立过程...
  11. linux使用中的问题 --- (Unable to establish SSL connection)
  12. YASKAWA 安川变频器调试软件支持多种机型
  13. Excel 精选28个技巧
  14. SSD1306驱动理解
  15. 高数 | 变限积分中的等价无穷小替换
  16. html怎么把图做成3d效果,ps怎么制作立体效果 ps做图怎么做出立体的效果
  17. 【Python数据分析学习实例】篮球运动位置分析
  18. HTTP请求状态码集合
  19. 【其他】神舟精盾K470-i3 D3更换支持5GHz的双频无线网卡
  20. Exception in thread “main“ java.lang.NullPointerException问题

热门文章

  1. 光子映射光子追踪学习分享
  2. Linux和Mac下的微信电脑版electronic-wechat(非官方)
  3. python 中文排序(按拼音首字母)
  4. 开入量与开出量的一点总结
  5. 实用办公工具合集,手把手教学,附软件包
  6. 使用outlook 2007配置microsoft exchange邮箱方法步骤
  7. 最新 android系统 设备 分布情况,CNCERT 2018年第一季度国内操作系统及浏览器占比情况分析...
  8. python解题时间_1小时还是30秒?Python给你的另一种数据处理选择
  9. ProcessOn -在线绘图
  10. cmd命令打开文本文档_Windows10家庭版打开「本地组策略」