题解 | #小红的字符串构造#

小红的字符串构造

https://www.nowcoder.com/practice/3e4b4dabc2e444e384c3ae62ac7dd84e

思路可以看代码中的注释。。。。。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
	  // 将输入的字符串转换成字符数组
        char[] c = s.toCharArray();
	  // 记录原字符串中出现的字符种类
        boolean[] flag = new boolean[26];
        for(int i=0; i<c.length; i++){
            flag[c[i] - 'a'] = true;
        }
	  // 在每次遍历过程中,将遇到的字符变成离它距离最近的右边一个字符
        for(int i=0; i<c.length; i++) {
		  // 记录交换的标记;标记的作用是,如果改变了说明该位置的字符与原来的字符不一致;否则一致则没有变化,不符合要求,直接返回-1即可。
            boolean t = false;
            int k = c[i] - 'a';
            for(int j=k+1; j<26+k; j++){
                if(flag[j%26]){
                    t = true;
                    c[i] = (char) (j%26 + 'a');
                }
            }
            if(!t){
                System.out.println(-1);
                return ;
            }
        }
        System.out.println(new String(c));
    }
}

全部评论

相关推荐

10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务