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

根河企业网站建设郑州app制作一个需要多少钱

根河企业网站建设,郑州app制作一个需要多少钱,长春经开人才网,简单网站设计网站1. 引言 在字符串处理中#xff0c;我们经常需要从一个较长的字符串中找到包含特定目标字符串的最短子串。这个问题在文本搜索、基因序列分析等领域有着广泛的应用。本文将介绍一种高效的算法来解决这个问题。 2. 问题描述 给定一个源字符串 source 和一个目标字符串 targe…1. 引言 在字符串处理中我们经常需要从一个较长的字符串中找到包含特定目标字符串的最短子串。这个问题在文本搜索、基因序列分析等领域有着广泛的应用。本文将介绍一种高效的算法来解决这个问题。 2. 问题描述 给定一个源字符串 source 和一个目标字符串 target我们需要找到 source 中包含 target 所有字符的最短子串。如果找不到这样的子串则返回空字符串。问题来源炼码 32 · 最小子串覆盖 样例 样例 1 输入source “abc” target “ac” 输出“abc” 解释“abc” 是 source 的包含 target 的每一个字符的最短的子串。 样例 2 输入source “adobecodebanc” target “abc” 输出“banc” 解释“banc” 是 source 的包含 target 的每一个字符的最短的子串。 样例 3 输入source “abc” target “aa” 输出“” 解释没有子串包含两个 ‘a’。 3. 算法思路 为了解决这个问题我们可以使用滑动窗口Sliding Window技术。滑动窗口是一种在数组或字符串上处理问题的有效方法它可以在一次遍历中解决多个连续子数组或子字符串的问题。 步骤 1、初始化 创建一个字典 targetCount 来记录 target 中每个字符的出现次数。创建一个字典 windowCount 来记录当前窗口中每个字符的出现次数。初始化两个指针 left 和 right分别表示窗口的左右边界。初始化变量 matched 来记录当前窗口中已经匹配的 target 中的字符种类数。初始化变量 minStart 和 minLength 来记录最短子串的起始位置和长度。 2、扩展窗口 使用 right 指针向右移动将字符添加到窗口中。更新 windowCount 和 matched。 3、缩小窗口 当窗口包含了 target 中的所有字符时即 matched targetCount.Count尝试缩小窗口以找到更短的子串。使用 left 指针向左移动从窗口中移除字符。更新 windowCount 和 matched。如果缩小后的窗口仍然包含 target 中的所有字符并且长度更短则更新 minStart 和 minLength。 4、返回结果 根据 minStart 和 minLength 从 source 中提取最短子串并返回。 4. 算法实现 以下是该算法的 C# 实现 using System; using System.Collections.Generic;class Program {static void Main(){string source adobecodebanc;string target abc;string result FindShortestSubstringContainingTarget(source, target);Console.WriteLine(result); // Output: banc}static string FindShortestSubstringContainingTarget(string source, string target){if (string.IsNullOrEmpty(source) || string.IsNullOrEmpty(target))return string.Empty;Dictionarychar, int targetCount new Dictionarychar, int();foreach (char c in target){targetCount[c] 0;}foreach (char c in target){targetCount[c];}int left 0, right 0;int minStart 0, minLength int.MaxValue;int matched 0;Dictionarychar, int windowCount new Dictionarychar, int();while (right source.Length){char rightChar source[right];if (targetCount.ContainsKey(rightChar)){if (!windowCount.ContainsKey(rightChar))windowCount[rightChar] 0;windowCount[rightChar];if (windowCount[rightChar] targetCount[rightChar])matched;}while (matched targetCount.Count){if (right - left 1 minLength){minStart left;minLength right - left 1;}char leftChar source[left];if (targetCount.ContainsKey(leftChar)){windowCount[leftChar]--;if (windowCount[leftChar] targetCount[leftChar])matched--;}left;}right;}return minLength int.MaxValue ? string.Empty : source.Substring(minStart, minLength);} }输出结果 5. 示例分析 假设 source “adobecodebanc”target “abc”。 初始时left 0right 0matched 0minStart 0minLength int.MaxValue。 随着 right 的移动窗口逐渐扩展直到包含 target 中的所有字符。 当窗口包含 abc 时例如当 right 指向 c 时开始缩小窗口。 在缩小窗口的过程中找到包含 abc 的最短子串 “banc”。 6. 结论 本文介绍了一种使用滑动窗口技术来寻找包含目标字符串的最短子串的算法。该算法通过维护一个窗口来动态地包含和排除字符从而在一次遍历中找到了最短子串。这种方法不仅高效而且易于理解和实现。
http://www.hkea.cn/news/14442507/

相关文章:

  • 手机软件网站凡科做网站不好
  • 做mla的网站工作网站开发制作
  • 长春餐饮网站建设中铁建设集团门户网站登陆
  • 电子商务网站建设考卷数字营销招聘
  • h5网站建设贵州seo技术查询
  • 网站中文域名好不好wordpress和drupal
  • 东阳网站推广wordpress wp_query
  • 池州网站建设开发什么是网络设计制作
  • 2018年静安区品牌网站建设优秀网站网页设计
  • 免费做优化的网站百度怎么自己做网站
  • 怎么做pdf电子书下载网站怎样运营推广网站
  • 银行网站开发技术方案盘锦网站建设咨询
  • 打开浏览器直接进入网站手机优化电池充电要开吗
  • 中国有哪些企业网站灰色行业seo
  • 网站建设目标计划书中国风网页设计欣赏
  • 永久域名注册网站营销策划案
  • 侯马建设规划局网站建网站程序下载
  • 沈阳模板 网站建设加强网站建设工作总结
  • 兰州网站seo收费企业网站建设实例
  • 东莞网站建广告设计公司介绍文案
  • 坪地网站建设包括哪些建网站价格
  • 编程开源网站Wordpress漫画插件
  • 做网站图咸阳市建设局网站
  • 徐州市新沂市建设局网站网站建设推广服务费的税率是
  • 科技公司手机端网站wordpress 画面做成
  • 网站建设用哪种语言最好招投标数据统计
  • 钦州市住房和城乡建设局网站网站开发新型技术
  • 做网站开发的公司销售咸阳网站建设专业公司
  • dedecms两网站共享用户名富阳建设局网站电话
  • 长沙商城网站烟台网站建设 58