/*
* 358. Rearrange String k Distance Apart
* 2016-7-14 by Mingyang
*/
public String rearrangeString(String str, int k) {
int length = str.length();
int[] count = new int[26];
int[] valid = new int[26];
for(int i=0;i<length;i++){
count[str.charAt(i)-'a']++;
}
StringBuilder sb = new StringBuilder();
for(int index = 0;index<length;index++){
int candidatePos = findValidMax(count, valid, index);
if( candidatePos == -1) return "";
count[candidatePos]--;
valid[candidatePos] = index+k;
sb.append((char)('a'+candidatePos));
}
return sb.toString();
}
private int findValidMax(int[] count, int[] valid, int index){
int max = Integer.MIN_VALUE;
int candidatePos = -1;
for(int i=0;i<count.length;i++){
if(count[i]>0 && count[i]>max && index>=valid[i]){
max = count[i];
candidatePos = i;
}
}
return candidatePos;
}

最新文章

  1. [ACM_动态规划] 嵌套矩形
  2. 如何处理Android Studio 上面关于 update 和 commit 小箭头的消失
  3. LaTex Font Size 字体大小命令
  4. Ext.data.Store动态修改url
  5. arcgis for android访问arcgis server上自己制作部署的地图服务
  6. Javascript禁止网页复制粘贴效果,或者复制时自动添加来源信息
  7. Qt5如何设置静态编译,解决生成的可执行文件打开出错问题
  8. hadoop配置及无法移动文件到hdfs故障解析
  9. 杭电oj find your present (2)
  10. Cloudera Hadoop 5&amp; Hadoop高阶管理及调优课程(CDH5,Hadoop2.0,HA,安全,管理,调优)
  11. C# Dapper 轻量ORM调试对SQLServer
  12. 福州大学软件工程1916 | W班 作业成绩排名汇总
  13. 使用css控制文字显示几行并且剩余部分隐藏(移动端和PC端同样适用)
  14. [转]IIS 日志记录时间和实际时间 不一样
  15. excel 添加换行符,去除换行符:
  16. Laravel框架 -- Validator 可用的验证规则
  17. nodejs之util工具
  18. sap server笔记
  19. tensorflow 教程 文本分类 IMDB电影评论
  20. 【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律

热门文章

  1. 欧拉函数:HDU3501-Calculation 2
  2. Linux之ssh服务介绍
  3. Linux学习-软件磁盘阵列 (Software RAID)
  4. jenkins匿名用户登录 - 安全设置
  5. P3369 【模板】普通平衡树 Treap
  6. UVa 1630 区间DP Folding
  7. HDU 3394 双连通分量 桥 Railway
  8. launchMode
  9. socket编程了解
  10. python - 接口自动化测试实战 - case1 - 再次优化版