博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 767. Reorganize String
阅读量:6273 次
发布时间:2019-06-22

本文共 1288 字,大约阅读时间需要 4 分钟。

Problem

Given a string S, check if the letters can be rearranged so that two characters that are adjacent to each other are not the same.

If possible, output any possible result. If not possible, return the empty string.

Example 1:

Input: S = "aab"

Output: "aba"
Example 2:

Input: S = "aaab"

Output: ""
Note:

S will consist of lowercase letters and have length in range [1, 500].

Solution

class Solution {    public String reorganizeString(String S) {        int n = S.length();        int[] cnt = new int[128];        char mc = 'a';        for (char c : S.toCharArray()) {            cnt[c]++;            mc = (cnt[c] > cnt[mc]) ? c : mc;        }        if (cnt[mc] == 1) {            return S;        }        if (cnt[mc] > (n+1)/2) {            return "";        }        StringBuilder[] sb = new StringBuilder[cnt[mc]];        for (int i = 0; i < sb.length; i ++) {            sb[i] = new StringBuilder();            sb[i].append(mc);        }        int k = 0;        for (char c = 'a'; c <= 'z'; c++) {            while (c != mc && cnt[c] > 0) {                sb[k++].append(c);                cnt[c]--;                k %= sb.length;            }        }        for (int i = 1; i < sb.length; i++) {            sb[0].append(sb[i]);        }        return sb[0].toString();    }}

转载地址:http://lhlpa.baihongyu.com/

你可能感兴趣的文章
微信H5支付坑一--手续费未结算
查看>>
Spring Cloud Alibaba发布第二个版本,Spring 发来贺电
查看>>
Netty 备录 (一)
查看>>
netfilter 五个表五个链介绍,iptables案例
查看>>
Ubuntu服务器界面认识及创建用户
查看>>
网站如何防止sql注入攻击
查看>>
【TeeChart .NET教程】(四)轴控制
查看>>
关于SBR3U30P1-7你必须知道的
查看>>
Linux防火墙-firewalled
查看>>
爬虫获取网页,出现乱码问题
查看>>
再有人问你Java内存模型是什么,就把这篇文章发给他
查看>>
控制台程序隐藏方法总结(四种)
查看>>
nginx负载均衡
查看>>
企业能源管理系统的基本要求和主要内容
查看>>
JAVA基础学习之-AQS的实现原理分析
查看>>
IT兄弟连 JavaWeb教程 监听器4
查看>>
[喵咪BELK实战(3)] logstash+filebeat搭建
查看>>
线程中无法注入bean
查看>>
jetty的xml配置文件
查看>>
Hyper-V:虚拟网络配置
查看>>