当前位置: 首页 > news >正文

个人站长做网站需要多少钱长春网络科技公司排名

个人站长做网站需要多少钱,长春网络科技公司排名,乡镇做电器网站能不能营运,代理产品网问题描述: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入&…

问题描述: 

给你两个字符串 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 。

解题思路:

简单方法

class Solution {public int strStr(String haystack, String needle) {return haystack.indexOf(needle);}
}

利用现成的方法,indexOf方法就是返回匹配的第一个字符串的索引位置 

看一下源码(一环套一环):

public int indexOf(int ch, int fromIndex) {final int max = value.length;if (fromIndex < 0) {fromIndex = 0;} else if (fromIndex >= max) {// Note: fromIndex might be near -1>>>1.return -1;}if (ch < Character.MIN_SUPPLEMENTARY_CODE_POINT) {// handle most cases here (ch is a BMP code point or a// negative value (invalid code point))final char[] value = this.value;for (int i = fromIndex; i < max; i++) {if (value[i] == ch) {return i;}}return -1;} else {return indexOfSupplementary(ch, fromIndex);}}

暴力方法

  1. 初始化变量
    • haystack:要搜索的字符串。
    • needle:要查找的子字符串。
    • haystackLengthhaystack的长度。
    • needleLengthneedle的长度。
    • result:用于存储匹配项的下标,初始化为-1(表示未找到)。
  2. 遍历haystack
    • 使用一个循环遍历haystack,从索引0开始,直到haystackLength - needleLength(因为从当前位置开始,如果剩余长度小于needle的长度,则不可能匹配)。
  3. 检查匹配
    • 在每次循环中,从当前索引开始,比较haystackneedle的字符,直到匹配完整个needle或发现不匹配。
    • 如果发现完全匹配,则更新result为当前索引,并跳出循环(因为我们只需要找到第一个匹配项)。
  4. 返回结果
    • 如果找到匹配项,则返回result
    • 否则,返回-1。
      public class StringMatcher {public static int strStr(String haystack, String needle) {int haystackLength = haystack.length();int needleLength = needle.length();if (needleLength == 0) {return 0; // 如果needle为空字符串,则任何位置都是匹配项,返回0(根据题意)}for (int i = 0; i <= haystackLength - needleLength; i++) {int j;for (j = 0; j < needleLength; j++) {if (haystack.charAt(i + j) != needle.charAt(j)) {break; // 一旦发现不匹配,跳出内层循环}}if (j == needleLength) {return i; // 如果完全匹配,返回当前索引}}return -1; // 未找到匹配项,返回-1}public static void main(String[] args) {String haystack = "hello haystack";String needle = "stack";int index = strStr(haystack, needle);System.out.println("The first occurrence of \"" + needle + "\" in \"" + haystack + "\" is at index: " + index);}
      }

代码解释: 

外层循环

for (int i = 0; i <= haystackLength - needleLength; i++) 
  • 这个循环从haystack的第一个字符开始,直到haystack中剩余字符的数量不足以匹配整个needle为止。
  • 变量i代表当前正在检查的haystack中的起始位置。
  • 条件i <= haystackLength - needleLength 确保了 i + needleLength 不会超过 haystack的长度,从而避免 StringIndexOutOfBoundsException
  • 体会一下,比如第一个字符串是234523,第二个字符串是23。那只需要外层循环6-2=4(次)

内层循环

for (j = 0; j < needleLength; j++) {
if (haystack.charAt(i + j) != needle.charAt(j)) 
  • 这个循环用于逐个字符地比较haystack从位置i开始的子字符串和needle
  • 变量j代表当前正在比较的字符的索引。
  • 如果在任何时候haystack中的字符与needle中的对应字符不匹配,break语句会立即终止内层循环。

还有KMP算法,但是不会用,后面慢慢学习! 

http://www.tj-hxxt.cn/news/113557.html

相关文章:

  • 起飞页做网站短视频seo代理
  • 北京开发办网站营销技巧在线完整免费观看
  • wordpress如何搭建网站关联词有哪些
  • 政府网站域名代码互联网营销做什么
  • 德阳哪里有做网站的互联网营销师培训费用是多少
  • 义乌网站百度推广广告公司
  • 做毕业设计资料网站好百度管理员联系方式
  • 泉州模板建站软件浙江网站建设平台
  • 网站开发辛苦吗比较好的网络优化公司
  • 重庆南岸网站建设网址怎么推广
  • 优秀 响应式网站沈阳seo排名优化推广
  • 企业管理咨询属于哪个行业西安seo高手
  • 旅游网站wordpress如何让产品吸引顾客
  • 做网站js框架网站关键词优化排名推荐
  • 泰安市高新区建设局网站网易企业邮箱
  • 加盟什么网站建设seo实战密码在线阅读
  • 怀化网站优化哪里有关键词异地排名查询
  • 企业网站的建设公司企业品牌推广策划方案
  • 企业年金怎么领取成都seo技术
  • 南京建设网站维护怎么上百度搜索
  • 大兴模板网站建设上海最新政策
  • 长沙做网站nn微联讯点很好福州网站快速排名提升
  • 网站建设seo策略有哪些百度百科官网
  • 微金所网站谁做的百度站长seo
  • 宁夏做网站找谁百度云盘资源共享链接群组链接
  • 成都哪里做网站好专业的google推广公司
  • 互联网网站界面设计 要素什么是网络营销平台
  • python 网站开发 视频高级搜索
  • 网站备案 教程百度广告代理
  • 贺州网站建设宁波关键词优化企业网站建设