leetcode763
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的更多相关文章
- [Swift]LeetCode763. 划分字母区间 | Partition Labels
A string S of lowercase letters is given. We want to partition this string into as many parts as pos ...
- 贪心算法leetcode-763
int[] lastShow = new int[26]; var list = new LinkedList<Integer>(); for (int i = 0; i < s.l ...
随机推荐
- qt忙等与非忙等
非忙等: void delay(int msec) { QTime end = QTime::currentTime().addMSecs(msec); while( QTime::currentTi ...
- POJ 3279 Fliptile 状态压缩,思路 难度:2
http://poj.org/problem?id=3279 明显,每一位上只需要是0或者1, 遍历第一行的所有取值可能,(1<<15,时间足够)对每种取值可能: 对于第0-n-2行,因为 ...
- 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 ...
- C语言——第四次作业(2)
作业要求一 项目wordcount 设计思路:输入需统计的文件名,打开此文件,输入功能对应的字符,分别实现对应的功能,关闭文件. 主要代码 #include<stdio.h> #inclu ...
- BZOJ2938: [Poi2000]病毒(AC自动机)
2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1678 Solved: 849[Submit][Status][D ...
- 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 ...
- 使用 Win2D 绘制带图片纹理的圆(或椭圆)
使用 Win2D 绘制图片和绘制椭圆都非常容易,可是如何使用 Win2D 绘制图片纹理的椭圆呢? 本文内容 重力迷宫小球 Win2D 实现 关于 CanvasCommandList 重力迷宫小球 ▲ ...
- 都是用 DllImport?有没有考虑过自己写一个 extern 方法?
你做 .NET 开发的时候,一定用过 DllImport 这个特性吧,这货是用于 P/Invoke (Platform Invoke, 平台调用) 的.这种 DllImport 标记的方法都带有一个 ...
- LTE-Advanced(4G)主要技术学习:CA、CoMp、HetNet
CA:Carrier Aggregation,载波聚合 从LTE到LTE-Advanced演进过程中,更宽频谱的需求是影响演进的最重要因素,为此3GPP标准提出了载波聚合技术.简单地说,它可以将多个载 ...
- 6-18 Two Stacks In One Array(20 分)
Write routines to implement two stacks using only one array. Your stack routines should not declare ...