欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

2022.02.07

时间:2023-06-30
文章目录

1、题目2、思路

(1) 贪心算法 3、代码 1、题目 2、思路 (1) 贪心算法

每次只添加剩余数量最多的那个字母,若字符串的最后两个字母都是当前字母,则跳过当前字母。只要有字母被添加,则可进入下一轮循环。 3、代码

import java.util.Arrays;import java.util.Comparator;public class Test { public static void main(String[] args) { }}class Solution { public String longestDiverseString(int a, int b, int c) { Pair[] pairs = new Pair[]{new Pair('a', a), new Pair('b', b), new Pair('c', c)}; StringBuilder sb = new StringBuilder(); while (true) { Arrays.sort(pairs, new Comparator() { @Override public int compare(Pair o1, Pair o2) { return Integer.compare(o2.count, o1.count); } }); boolean hasNext = false; for (Pair pair : pairs) { if (pair.count == 0) { break; } int n = sb.length(); if (n >= 2 && sb.charAt(n - 2) == pair.ch && sb.charAt(n - 1) == pair.ch) { continue; } hasNext = true; sb.append(pair.ch); pair.count--; break; } if (!hasNext) { break; } } return sb.toString(); }}class Pair { public char ch; public int count; public Pair(char ch, int count) { this.ch = ch; this.count = count; }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。