题解 | 小红的字符串构造

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            if(str.length() == 1) {
                System.out.println("-1");
                continue;
            }
            Set<Character> set = new HashSet<>();
            for(int i = 0; i < str.length(); i++) {
                set.add(str.charAt(i));
            }

            // 如果set集合中只有1个字符,表示这个字符串中所有的字符都一样,输出-1
            if(set.size() == 1) {
                System.out.println("-1");
                continue;
            }

            // 创建映射关系,a -> b; b -> c; c -> a
            List<Character> list = new ArrayList<>(set);
            Map<Character, Character> map = new HashMap<>();
            for(int i = 0; i < list.size(); i++) {
                if(i == list.size() - 1) {
                    map.put(list.get(i), list.get(0));
                } else {
                    map.put(list.get(i), list.get(i+1));
                }
            }

            StringBuilder sb = new StringBuilder();
            
            for(int i = 0; i < str.length(); i++) {
                sb.append(map.get(str.charAt(i)));
            }
            System.out.println(sb.toString());
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务