zoukankan      html  css  js  c++  java
  • [LC] 767. Reorganize String

    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].
    class Solution {
        public String reorganizeString(String S) {
            Map<Character, Integer> map = new HashMap<>();
            for (char c : S.toCharArray()) {
                map.put(c, map.getOrDefault(c, 0) + 1);
            }
            PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>((a, b) -> (b.getValue() - a.getValue()));
            for (Map.Entry<Character, Integer> entry: map.entrySet()) {
                pq.offer(entry);
            }
            
            Map.Entry<Character, Integer> prev = null;
            StringBuilder sb = new StringBuilder();
            while (!pq.isEmpty()) {
                Map.Entry<Character, Integer> cur = pq.poll();
                sb.append(cur.getKey());
                cur.setValue(cur.getValue() - 1);
                
                if (prev != null) {
                    pq.offer(prev);
                }
                if (cur.getValue() > 0) {
                    prev = cur;
                } else {
                    prev = null;
                }
            }
            return sb.length() == S.length() ? sb.toString() : "";
        }
    }
  • 相关阅读:
    Javascript 中的浮点数精度丢失问题
    react中使用字符串中生成HTML
    前端-HTML规范
    js 数组(Array)的使用
    ES6变量声明解析
    cookies sessionlStorage和localStroage的区别
    面向对象
    迭代器、生成器、装饰器
    内置函数和文件读取
    函数
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12245020.html
Copyright © 2011-2022 走看看