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

建站宝盒自助建站系统企业做网站的意义

建站宝盒自助建站系统,企业做网站的意义,自己做的网站能备案,零基础学软件开发难吗原题链接🔗:划分字母区间难度:中等⭐️⭐️ 题目 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接&#…
  • 原题链接🔗:划分字母区间
  • 难度:中等⭐️⭐️

题目

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。

返回一个表示每个字符串片段的长度的列表。

示例 1:
输入:s = “ababcbacadefegdehijhklij”
输出:[9,7,8]
解释:
划分结果为 “ababcbaca”、“defegde”、“hijhklij” 。
每个字母最多出现在一个片段中。
像 “ababcbacadefegde”, “hijhklij” 这样的划分是错误的,因为划分的片段数较少。

示例 2:

输入:s = “eccbbbbdec”
输出:[10]

提示:

  • 1 <= s.length <= 500
  • s 仅由小写英文字母组成

贪心算法

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法策略。它在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。

贪心算法不保证会得到最优解,但在某些问题上贪心算法的解是足够好的。以下是贪心算法的一些关键特性:

  1. 贪心选择性质:算法在每一步都选择当前看起来最优的选项,而不考虑未来的选择。
  2. 最优子结构:问题可以分解为子问题,子问题的最优解能组成原问题的最优解。
  3. 可行性:贪心选择必须在当前状态下可行。

贪心算法通常用于求解以下类型的问题:

  • 资源分配问题
  • 调度问题
  • 网络流问题
  • 集合覆盖问题
  • 最小生成树问题(如 Prim 算法和 Kruskal 算法)

贪心算法的实现步骤通常包括:

  1. 定义问题的一个解决方案。
  2. 遍历所有候选解。
  3. 选择当前状态下的最优候选解,并将其添加到当前解决方案中。
  4. 重复步骤2和3,直到达到问题的结束条件。

贪心算法的优点是简单、直观,且在某些情况下效率很高。然而,缺点是它不总是能得到全局最优解,特别是当问题不具有最优子结构时。

题解

  1. 解题思路:

这个问题是一个典型的贪心算法问题,我们可以通过以下步骤来解决:

  • 初始化:创建一个空列表 result 用来存储每个片段的长度。

  • 遍历字符串:从左到右遍历字符串 s。

  • 记录当前字母:使用一个变量 current_char 记录当前遍历到的字母。

  • 计数:使用一个变量 count 来记录当前字母连续出现的次数。

  • 更新片段长度:每当遇到一个新的字母,或者到达字符串的末尾时,将 count 加入到 result 列表中,并重置 count 和 current_char。

  • 特殊情况处理:如果当前字母和下一个字母相同,则 count 自增,继续遍历;如果不同,将当前 count 存入 result 并更新 current_char 和 count。

  • 返回结果:遍历结束后,返回 result 列表。

  1. c++ demo:
#include <iostream>
#include <vector>
#include <unordered_map>using namespace std;class Solution {
public:vector<int> partitionLabels(string s) {vector<int> result;unordered_map<char, int> last_position;int start = 0, end = -1, length = 0;// 记录每个字符最后一次出现的位置for (int i = 0; i < s.length(); ++i) {last_position[s[i]] = i;}for (int i = 0; i < s.length(); ++i) {// 更新当前片段的结束位置end = max(end, last_position[s[i]]);length++;// 如果当前位置是当前片段的结束位置,则添加到结果中if (i == end) {result.push_back(length);start = i + 1; // 重置片段开始位置end = -1; // 重置片段结束位置length = 0; // 重置片段长度}}return result;}
};int main() {Solution solution;string s = "ababcbacadefegdehijhklij";vector<int> result = solution.partitionLabels(s);for (int length : result) {cout << length << " ";}cout << endl;return 0;
}
  • 输出结果:

9 7 8

  1. 代码仓库地址:partitionLabels
http://www.yayakq.cn/news/634630/

相关文章:

  • 惠州网站建设系统公众号如何做微网站
  • 济南易搜的网站建设兼职会计
  • 个人做电商网站需要备案吗在线画图软件
  • 网站的内容建设php网站开发程序
  • 东阳网站建设报价网站建设公司发展历程
  • 重庆建设工程安全管理协会网站物流网站的建设论文一万字
  • 自己搭建个人网站的注意事项注册公司一年要交多少税
  • 邯郸形象网站建设电商网站模板免费
  • 哈尔滨网站建设自助建站网站被攻击了怎么处理
  • 网站首页phpcms怎么添加广州教育平台登录入口
  • 黑帽seo技术刷关键词排名seo软件
  • 河南专业网站建设开发团队西安中企动力科技股份有限公司
  • 怎么在国外网站买东西网络安全培训
  • 重庆官方网站查询系统电商网站有那些
  • 专业做网站哪里有中信建设有限责任公司龙芳
  • 市妇联门户网站平台建设情况天台县建设规划局网站
  • 威海 网站开发程序员 修电脑 做网站
  • 制作微信网站模板wordpress升级崩了
  • 网站备案号 脱离服务商哈尔滨seo网站排名
  • 斗门网站建设wordpress插件在哪
  • 坪山网站建设基本流程设计图片模板
  • 网站建设自评报告wordpress 打赏
  • wordpress多站点 域名邢台县建设局网站
  • 河南住房和城乡建设局网站用于建设教学网站的建站工具有哪些特点
  • 企业网站推广目标绿色调网站
  • 宁波高端网站开发聊城做wap网站找谁
  • wordpress知名中国网站网站域名是什么东西
  • 早期网站开发用的技术有哪些可以做头像的网站
  • 餐饮 公司 网站建设软件工程课程设计课程网站建设
  • 永久免费网站模板怎么去建一个网站