题解 | #小红的字符串构造#
小红的字符串构造
https://www.nowcoder.com/practice/3e4b4dabc2e444e384c3ae62ac7dd84e
#include <iostream> #include <map> #include<vector> #include <unordered_map> using namespace std; int main(){ string s; cin >> s; unordered_map<char, bool> p; // 记录出现的字符 unordered_map<char, char> res; // 记录上一个出现的字符 下一个出现的字符 vector<char> vec; // 去重后 不同的字符 for(char& ch : s){ if(!p[ch]) vec.push_back(ch); p[ch] = true; } int n = vec.size(); // 如果只有一个字 就-1 if(n < 2) cout << -1 << endl; // 把每个字符变成下一个出现的字符 for(int i = 0; i < n; i ++) res[vec[i]] = vec[(i + 1) % n]; for(int i = 0; i < s.length(); i ++) cout << res[s[i]]; return 0; }