首页 > 代码库 > [LeetCode] String Reorder Distance Apart
[LeetCode] String Reorder Distance Apart
Question:
Given a string of lowercase characters, reorder them such that the same characters are at least distance d from each other.
Input: { a, b, b }, distance = 2
Output: { b, a, b }
http://leetcode.com/2010/05/here-is-another-google-phone-interview.html
public void reorder(int[] A, int d) { // Stats Map<Integer, Integer> map = new HashMap<>(); for (int i : A) { Integer occurance = map.get(i); if (occurance == null) occurance = 0; occurance++; map.put(i, occurance); } // Sort List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() { public int compare(Entry<Integer, Integer> a, Entry<Integer, Integer> b) { return -1 * Integer.compare(a.getValue(), b.getValue()); } }); // Re-assign int curIndex = 0; Map.Entry<Integer, Integer> cur = list.get(curIndex); int curOccurance = 0; for (int offset = 0; offset < d; offset++) { for (int i = offset; i < A.length; i += d) { A[i] = cur.getKey(); curOccurance++; if (curOccurance == cur.getValue()) { curIndex++; if (curIndex == list.size()) return; cur = list.get(curIndex); curOccurance = 0; } } } }
[LeetCode] String Reorder Distance Apart
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。