题解 | #字符串加密#

字符串加密

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)

全部评论

相关推荐

07-30 11:27
门头沟学院 Java
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务