public class Solution
{
public IList<int> PartitionLabels(string S)
{
var dic = new Dictionary<char, int[]>();
//记录每一个字符的第一次出现位置,和最后一次出现位置
for (int i = ; i < S.Length; i++)
{
if (!dic.ContainsKey(S[i]))
{
dic.Add(S[i], new int[] { i, i });
}
else
{
dic[S[i]][] = i;
}
}
var list = new List<int>();
int low = ;
int high = S.Length - ;
while (low <= high)
{
var c = S[low];
var i = dic[c][];//当前字符最小索引
var j = dic[c][];//当前字符最大索引
if (j == high)
{
list.Add(high - low + );
return list;
}
for (; i <= j; i++)
{
var cc = S[i];
var ii = dic[cc][];
var jj = dic[cc][];
if (jj == high)
{
list.Add(high - low + );
return list;
}
if (jj > j)
{
j = jj;
}
}
list.Add(i - low);
low = i;
} return list;
}
}

本题使用贪心算法思想,这里给出的代码是比较高效的一种解法。

leetcode763的更多相关文章

  1. [Swift]LeetCode763. 划分字母区间 | Partition Labels

    A string S of lowercase letters is given. We want to partition this string into as many parts as pos ...

  2. 贪心算法leetcode-763

    int[] lastShow = new int[26]; var list = new LinkedList<Integer>(); for (int i = 0; i < s.l ...

随机推荐

  1. qt忙等与非忙等

    非忙等: void delay(int msec) { QTime end = QTime::currentTime().addMSecs(msec); while( QTime::currentTi ...

  2. POJ 3279 Fliptile 状态压缩,思路 难度:2

    http://poj.org/problem?id=3279 明显,每一位上只需要是0或者1, 遍历第一行的所有取值可能,(1<<15,时间足够)对每种取值可能: 对于第0-n-2行,因为 ...

  3. New Concept English Two 18 46

    $课文44  穿过森林 451. Mrs. Anne Sterling did not think of the risk she was taking when she ran through a ...

  4. C语言——第四次作业(2)

    作业要求一 项目wordcount 设计思路:输入需统计的文件名,打开此文件,输入功能对应的字符,分别实现对应的功能,关闭文件. 主要代码 #include<stdio.h> #inclu ...

  5. BZOJ2938: [Poi2000]病毒(AC自动机)

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1678  Solved: 849[Submit][Status][D ...

  6. SpringBoot启动报:Caused by: java.lang.IllegalArgumentException: At least one JPA metamodel must be present!

    使用spring boot对项目改造,启动报错: Caused by: java.lang.IllegalArgumentException: At least one JPA metamodel m ...

  7. 使用 Win2D 绘制带图片纹理的圆(或椭圆)

    使用 Win2D 绘制图片和绘制椭圆都非常容易,可是如何使用 Win2D 绘制图片纹理的椭圆呢? 本文内容 重力迷宫小球 Win2D 实现 关于 CanvasCommandList 重力迷宫小球 ▲ ...

  8. 都是用 DllImport?有没有考虑过自己写一个 extern 方法?

    你做 .NET 开发的时候,一定用过 DllImport 这个特性吧,这货是用于 P/Invoke (Platform Invoke, 平台调用) 的.这种 DllImport 标记的方法都带有一个 ...

  9. LTE-Advanced(4G)主要技术学习:CA、CoMp、HetNet

    CA:Carrier Aggregation,载波聚合 从LTE到LTE-Advanced演进过程中,更宽频谱的需求是影响演进的最重要因素,为此3GPP标准提出了载波聚合技术.简单地说,它可以将多个载 ...

  10. 6-18 Two Stacks In One Array(20 分)

    Write routines to implement two stacks using only one array. Your stack routines should not declare ...