题解 | #字符串加密#
字符串加密
https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String key = in.nextLine();
        String toSecret= in.nextLine();
        //build the Map small alpha
        Map<Character,Character> map = getMap(key);
        StringBuffer result = new StringBuffer();
        for(char a:toSecret.toCharArray()){
            result.append(map.get(a));
        }
        System.out.println(result.toString());
    }
    private static Map<Character,Character>  getMap(String key) {
        Map<Character,Character> result = new HashMap<Character,Character>();
        List<Character> toDuplicate = new ArrayList();
        List<Character> list = new ArrayList();
        for(char a:key.toCharArray()){
            list.add(a);
        }
         int index = 0;
        for(int i=0;i<key.length();i++){
            if(toDuplicate.contains(key.charAt(i))){
                continue;
            }
          result.put((char)('a'+index++),key.charAt(i));
          toDuplicate.add(key.charAt(i));
        }
       
        for(int i=0;i<26;i++){
            if(key.indexOf((char)('a'+i))==-1){
                 result.put((char)('a'+index++),(char)('a'+i));   
            }
        }
        return result;
 
    }
}
按照题意顺序写,需要注意一下几点
重复字符不能算,所以要把重复字符部分扣除掉。
时间复杂度O(n)
空间复杂度O(n)
小天才公司福利 1163人发布
 
查看7道真题和解析