对于字符串重排问题,有解的情况当且仅当所有元素的出现次数不超过总元素个数的一半,因此首先记录每个元素的出现次数判断是否输出”-1“ int n(s.size()); std::map<char, int> m; for (char c : s) { ++m[c]; if (m[c] > n / 2) { std::cout << -1 << std::endl; return; } } 然后关于元素如何重排,可以考虑贪心的策略,即遍历每个位置,将所有未排元素按剩余数量从大到小排序,在每个位置放下的元素为【出现次数最多且与原元素不同】的...