题解 | 小红的字符串构造
小红的字符串构造
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")
