题解 | 小红的字符串构造
小红的字符串构造
https://www.nowcoder.com/practice/3e4b4dabc2e444e384c3ae62ac7dd84e
#include <iostream> #include <unordered_set> #include <vector> #include <algorithm> using namespace std; string constructT(string s) { unordered_set<char> charSet(s.begin(), s.end()); // 提取无序字符集 vector<char> uniqueChars(charSet.begin(),charSet.end()); // 转为数组便于操作 if(charSet.size()<=1){ return "-1"; } string t = s; // 初始化 t 与 s 长度相同 // 调整顺序,右移一位,确保字符与对应位置不同 int n = uniqueChars.size(); for (int i = 0; i < s.size(); ++i) { auto mid=find(uniqueChars.begin(),uniqueChars.end(),s[i]); if(mid!=uniqueChars.end()){ int mit =(mid-uniqueChars.begin()+1)%n; t[i]=uniqueChars[mit]; } } return t; } int main() { string s; cin >> s; string t = constructT(s); cout << t << endl; return 0; } // 64 位输出请用 printf("%lld")