题解 | #小红的字符串构造#
小红的字符串构造
https://www.nowcoder.com/practice/3e4b4dabc2e444e384c3ae62ac7dd84e
如果字符集里只有一种字符,那就没办法换成别的字符。
否则,我们将字符替换成字符集的下一位。
c++代码:
#include <iostream>
#include <string>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
string s;
cin>>s;
set<char> chk(s.begin(),s.end());
vector<char> v(chk.begin(),chk.end());
int m=v.size(),w;
if(m==1)
{
cout<<"-1";
return 0;
}
for(char &c:s)
{
w=find(v.begin(),v.end(),c)-v.begin();
cout<<v[(w+1)%m];
}
return 0;
}
python代码:
s=input()
v=list(set(s))
m=len(v)
if(m==1):
print(-1)
else:
for i in s:
w=v.index(i)
print(v[(w+1)%m],end='')
java代码:
import java.util.*;
public class ZT6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s=sc.next();
int n=s.length(),m,i,w;
Set<Character> chk=new HashSet();
for(i=0;i<n;++i)
chk.add(s.charAt(i));
ArrayList<Character> v=new ArrayList(chk);
m=v.size();
if(m==1)
System.out.println(-1);
else{
for(i=0;i<n;++i){
w=v.indexOf(s.charAt(i));
System.out.print(v.get((w+1)%m));
}
}
}
}