首页 > 其他分享 >763. 划分字母区间

763. 划分字母区间

时间:2024-01-28 15:44:25浏览次数:20  
标签:字符 int 763 字母 位置 划分 字符串 代码

开始做的时候,就是单个字符这样想,看这个字符是否在当前字符串中。如果在就加入,不在就新建一个字符串,但发现这个思路是错的。
加入的字符改变的是当前字符串截至的位置,即使当前字符不在字符串中,但不意味着后面的字符就没有。
因此本题的关键就是先要找到每个字符的结束位置和每个字符串的结束位置,两个位置相等是就代表着找到了。
找到每个字符的结束位置,这个方法还是很巧妙的,不断更新最后位置

点击查看代码
for(int i=0;i<sz;i++){
    lastword[s[i]-'a']=i;
}
完整代码:
点击查看代码
class Solution {
public:
    vector<int> partitionLabels(string s) {
int sz=s.size();
vector<int>lastword(26,-1);
for(int i=0;i<sz;i++){
    lastword[s[i]-'a']=i;
}
int start=0;int end=0;
vector<int>result;
for(int i=0;i<sz;i++){
    end=max(end,lastword[s[i]-'a']);
    if(end==i){
        result.push_back(end-start+1);
        start=i+1;
    }
}
return result;
    }
};

标签:字符,int,763,字母,位置,划分,字符串,代码
From: https://www.cnblogs.com/yun-che/p/17992937

相关文章

  • day25 代码随想录算法训练营 17. 电话号码的字母组合
    题目:17.电话号码的字母组合我的感悟:一时间没理解没关系,只要不放弃,就会成长!!!理解难点:index是独立集合的起点,需要理解它。有些东西就是时间的积累代码难点:代码示例:classSolution:def__init__(self):self.letterMap=["",#0......
  • 一本通金牌导航 分治法 E.工程划分 / P5290 [十二省联考 2019] 春节十二响(启发式合并)
    题目传送门题意简述:将树上\(n\)个点划分为若干个集合,使得集合中的点两两没有祖孙关系。一个集合的权值是集合内点的权值的最大值,求所有集合的权值之和的最小值。首先这题有个非常显然的贪心:将几个权值大的点尽可能的合并到一个集合中是更优的。集合中的点两两没有祖孙关系,说......
  • 17. 电话号码的字母组合(中)
    目录题目题解:回溯题目题解:回溯classSolution:defletterCombinations(self,digits:str)->List[str]:ifnotdigits:#检查输入的数字串digits是否为空return[]a={"2":"abc","3":"def","4"......
  • Java如何过滤掉一段字符串中出现重复的字母或数字?
    可以使用Java中的HashSet来去除一段字符串中出现重复的字母或数字。HashSet是一个不允许有重复元素的集合,因此可以利用它的特性来去除重复的字符或数字。示例代码如下:importjava.util.HashSet;publicclassRemoveDuplicates{publicstaticvoidmain(String[]args){......
  • CF1763C
    Updateon2023.8.17:修正了一处小错误。分析题目可知,答案至少为\(\sum_{i=1}^{n}a_i\)。接下来考虑怎样使答案更大。可以对\(n\)分成如下几类情况讨论:\(n=2\)这种情况十分简单,如果选择操作最多一次,否则两次就会变为\(0\)。用$\left|a_1-a_2\right|\times2$判......
  • Linux系统文件属性按列划分以及各个字段的关系及作用
    按列划分s-li#-i显示inode号码33575030-rw-r--r--1rootroot881Mar609:151.log1.第一列:33575030inode号码2.第二列:-文件类型3.第三列:rw-r--r--九位文件权限rwx4.第四列:1文件的硬链接个数5.第五列:root文件......
  • 代码随想录 day25 组合总和Ⅲ 电话号码的字母组合
    组合总和Ⅲ跟组合总和Ⅰ很像这里固定了是1-9的范围而且确定了取k个数字那么就是确定了树的高度和宽度注意一下回溯的写法和边界条件就好还有剪枝操作如下其实就是当sum已经大于n就不需要再进行了电话号码的字母组合这题就是一般的回溯问题难点其实是在这投影怎么......
  • 用python提取excel表格第一列汉字首字母到第二列
    今天有个任务就是需要提取excel表格里面的汉字首字母,然后我就手动写了三个小时,结果还剩3000多行,这样下去不行啊想了下用python能不能做到呢?importopenpyxlfrompypinyinimportlazy_pinyin,Style#加载工作簿workbook=openpyxl.load_workbook('hanzi.xlsx')#选择......
  • ES--集群职责划分
     但是真实的集群一定要将集群职责分离:master节点:对CPU要求高,但是内存要求第data节点:对CPU和内存要求都高coordinating节点:对网络带宽、CPU要求高职责分离可以让我们根据不同节点的需求分配不同的硬件去部署。而且避免业务之间的互相干扰。......
  • leetcode 17.电话号码的字母组合
    leetcode17.电话号码的字母组合第十七题:电话号码的字母组合1.回溯:首先使用哈希表存储每个数字对应的所有可能的字母,然后进行回溯操作。回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是不完整的)。该字符串初始为空。每次取电话......