小红拿到了一个字符串,她准备构造一个和长度相同的字符串:满足以下条件: 1. 的字符集和的相同(去重后的,也就是说不考虑数量) 2. 的每个位置的字符都和不同。 例如若 s=”aabbc”,那么可以构造为”cbaca”。 你能帮帮小红吗?
区块链毕设网qklbishe.com为您提供问题的解答
小红拿到了一个字符串,她准备构造一个和长度相同的字符串:满足以下条件:
1. 的字符集和的相同(去重后的,也就是说不考虑数量)
2. 的每个位置的字符都和不同。
例如若 s=”aabbc”,那么可以构造为”cbaca”。
你能帮帮小红吗?
把所有的字符以及位置保存一下,然后采用的策略是一号字符填充到二号字符的位置,二号字符填充到三号字符的位置,最后一个字符填充到一号字符的位置
那么无法出现满足要求的答案的情况就是只有一种字符的时候
注意只要求用的字符一样,没说出现频率也要求一样
#include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; int n = s.length(); string answer (n, ' '); unordered_map<char, vector<int>> occu; for (int i = 0; i < n; i++) occu[s[i]].push_back(i); if (occu.size() == 1) cout << "-1"; else { vector<char> v; for (auto p : occu) v.push_back(p.first); for (int i = 0; i < v.size(); i++) { int j = (i + 1) % (v.size()); for (auto x : occu[v[j]]) answer[x] = v[i]; } cout << answer; } }
41:08
以上就是关于问题小红拿到了一个字符串,她准备构造一个和长度相同的字符串:满足以下条件:
1. 的字符集和的相同(去重后的,也就是说不考虑数量)
2. 的每个位置的字符都和不同。
例如若 s=”aabbc”,那么可以构造为”cbaca”。
你能帮帮小红吗?的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训