1. public class Solution
  2. {
  3. public IList<int> PartitionLabels(string S)
  4. {
  5. var dic = new Dictionary<char, int[]>();
  6. //记录每一个字符的第一次出现位置,和最后一次出现位置
  7. for (int i = ; i < S.Length; i++)
  8. {
  9. if (!dic.ContainsKey(S[i]))
  10. {
  11. dic.Add(S[i], new int[] { i, i });
  12. }
  13. else
  14. {
  15. dic[S[i]][] = i;
  16. }
  17. }
  18. var list = new List<int>();
  19. int low = ;
  20. int high = S.Length - ;
  21. while (low <= high)
  22. {
  23. var c = S[low];
  24. var i = dic[c][];//当前字符最小索引
  25. var j = dic[c][];//当前字符最大索引
  26. if (j == high)
  27. {
  28. list.Add(high - low + );
  29. return list;
  30. }
  31. for (; i <= j; i++)
  32. {
  33. var cc = S[i];
  34. var ii = dic[cc][];
  35. var jj = dic[cc][];
  36. if (jj == high)
  37. {
  38. list.Add(high - low + );
  39. return list;
  40. }
  41. if (jj > j)
  42. {
  43. j = jj;
  44. }
  45. }
  46. list.Add(i - low);
  47. low = i;
  48. }
  49.  
  50. return list;
  51. }
  52. }

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

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. Java网络编程和NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型

    Java网络编程与NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型 知识点 nio 下 I/O 阻塞与非阻塞实现 SocketChannel 介绍 I/O 多路复用的原理 事件选择器与 ...

  2. mfc "缺少函数标题(是否是老式的形式表)"的总结

    首先出现这种问题要定位到程序中出错的地方查看,如果没有问题就仔细看类的声明和定义.可能是对应类的后面没有加: 第二个原因是可能忘记了添加头文件 "stdafx",如果是这样可以加上 ...

  3. linux-mint下搭建android,angularjs,rails,html5开发环境

    目录[-] 必备软件: 环境配置: [open-jdk-6.0] [android-sdk] [ant] [github] [node.js] [rvm](ruby-1.9.3 rails-4.0.0 ...

  4. UVALive 5903 Piece it together 二分匹配,拆点 难度:1

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  5. jQuery hover 延时器实现代码

    例如: 复制代码代码如下: $('#foo').slideUp(300).delay(800).fadeIn(400);// 在.slideUp() 和 .fadeIn()之间延时800毫秒.  ho ...

  6. Java解析Json数据的两种方式

    JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛,下面介绍使用JsonObject和JsonArray的两种方式解析Json数据. 使用以上两种方式解析json ...

  7. 面筋: 奇虎360 c++ 后台开发 实习生 面试

    投的是360上海的商业化部门,岗位是C++服务端开发实习生,记录一下面试历程: 视频面试,但是是有代码框让你写代码的. 一面: Q:先说一下个人信息,做过的项目 A:.......... Q:先写个翻 ...

  8. 使用Pandas: str.replace() 进行文本清洗

    前段时间参加了Kaggle上的Mercari Price Suggestion Challenge比赛,收获良多,过些时候准备进行一些全面的总结,本篇文章先谈一个比赛中用到的小技巧. 这个比赛数据中有 ...

  9. Custom Ribbon in SharePoint 2010 & which not wrok when migrate from 2010 to 2013

    博客地址 http://blog.csdn.net/foxdave 1. First of all, let me show you the ribbon modal in our project w ...

  10. bzoj 2212 Tree Rotations

    bzoj 2212 Tree Rotations 考虑一个子树 \(x\) 的左右儿子分别为 \(ls,rs\) .那么子树 \(x\) 内的逆序对数就是 \(ls\) 内的逆序对数,\(rs\) 内 ...