题解 | #加密,主要是利用LinkedHashSet的特性(有序,去重),方便解答#

字符串加密

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

import java.util.* ;
public class Main{
    public static void main(String...args) {
        Scanner sc = new Scanner(System.in) ;
        while(sc.hasNextLine()) {
            String key = sc.nextLine() ;
            String target = sc.nextLine() ;
            System.out.println(code(key,target)) ;
        }
    }
    public static String code(String key , String target) {
        char k[] = key.toCharArray() ;
        char t[] = target.toCharArray() ;
        LinkedHashSet<Character> set = new LinkedHashSet<>() ;
        for(char ch : k) {
            if(isBig(ch)) {
                set.add(ch) ;
            } else {
                 set.add((char)(ch-32)) ;
            }
           
        }
        char alp[] = new char[26] ;
        for(int i = 0 ; i < 26 ; i ++) {
            alp[i] = (char)('A'+ i) ;
        }
        for(char ch : alp) {
            set.add(ch) ;
        }
        char[] dic = new char[26] ;
        int abc = 0 ;
        for(char ch : set) {
            dic[abc++] = ch ;
        }
        String aplStr = new String(alp) ;
        StringBuilder mid = new StringBuilder() ;
        for(char ch : t) {
            if(isBig(ch)) {
                int index = aplStr.indexOf(ch) ;
                mid.append(dic[index]) ;
            } else {
                int index = aplStr.indexOf(ch-32) ;
                mid.append((char)(dic[index]+32)) ;
            }
        }
        return new String(mid) ;
    }
    public static boolean isBig(char ch) {
        if(ch >= 'A' && ch <= 'Z') {
            return true ;
        }
        return false ;
    }
} 

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
09-29 17:44
已编辑
蔚来_测(准入职员工)
//鲨鱼辣椒:见不了了我实习了四个月上周再投筛选了一天就给我挂了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务