题解 | #字符串加密#

字符串加密

http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3

import java.util.*;

//耗时50min   主要在于集合基本知识不熟练  程序中出了很多错误
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextLine()){
            String key = scan.nextLine();
        String resource = scan.nextLine();
        //1.将key放入LinkedHashSet去重
        Set<Character> set = new LinkedHashSet<>();
        for(Character ch : key.toCharArray()){
            set.add(ch);
        }
        //2.将key从完整字母表集合中删除,并将key和剩余集合组成新集合
        Set<Character> alphaBet = new HashSet<>();//完整字母表
        char ch1='a';
        while(ch1>='a' && ch1<='z'){
            alphaBet.add(ch1++);
        }
        for(Iterator iterator=alphaBet.iterator();iterator.hasNext();){
            char ch2 = (char)iterator.next();
            if(set.contains(ch2))
                iterator.remove();//删除key包含的字母
        }
        ArrayList<Character> pwList = new ArrayList<>();//新集合
        for(Character ch : set){
            pwList.add(ch);
        }
        for(Character ch : alphaBet){
            pwList.add(ch);
        }
        
        //3.将顺序字母表与新集合组成一个map
        Map<Character,Character> map = new HashMap<>();
        char key2='a';
        for(Character ch : pwList){
            map.put(key2++,ch);
        }
        //4.利用map完成加密
        StringBuffer buffer = new StringBuffer();
        for(Character ch : resource.toCharArray()){
            buffer.append(map.get(ch));
        }
            System.out.println(buffer.toString());
        }
        
    }
}


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务