图片说明 图片说明

import java.util.HashMap;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        HashMap map = new HashMap();
        map.put("aa",'k');map.put("ab",'l');map.put("ac",'m');
        map.put("ad",'n');map.put("ae",'o');map.put("af",'p');
        map.put("ag",'q');map.put("ah",'r');map.put("ai",'s');
        map.put("",'t');map.put("ba",'u');map.put("bb",'v');
        map.put("bc",'w');map.put("bd",'x');map.put("be",'y');
        map.put("bf",'z');
        String s = sc.nextLine();
        String a[] = {"","","","","","","","","","","aa","ab","ac","ad","ae","af","ag","ah","ai","","ba","bb","bc","bd","be","bf","bg"};
        boolean jude = false;
        for(int i = 0;i < s.length();i++){
            if(!a[s.charAt(i) - 'a'].equals("")){
                s = s.substring(0,i)+a[s.charAt(i) - 'a']+s.substring(i+1);
                jude = true;
                break;
            }else{
                if(i!=s.length()-1)
                {
                    if(map.containsKey(s.substring(i,i+2)))
                    {
                        s = s.substring(0,i)+map.get(s.substring(i,i+2))+s.substring(i+2);
                        jude = true;
                        break;
                    }
                }
            }
        }
        if(jude){
            System.out.println(s);
        }else {
            System.out.println(-1);
        }


    }

}

##这是使用字符转换成别的字符,是没有想到用a数组,装下对应的需要转换的字符。首先使用hash装一个转换表,至于为什么用hash装,自己也应该明白hash的效率吧。好,接下来是先判断,如果输入的s字符串的第i个字符是a数组里的非空字符串,也就是k和其之后的字符,那么就直接转换成a数组里的元素(枚举法),如果不是呢,就直接在hash里搜索,如果有大于等于k的字符,那么就直接转换就可以了。