字符串合并处理

字符串合并处理

http://www.nowcoder.com/questionTerminal/d3d8e23870584782b3dd48f26cb39c8f

import java.util.*;

public class Main {

    private Map<Character, Character> map;

    public Main() {
        map = new HashMap<>();
        map.put('0', '0');
        map.put('1', '8');
        map.put('2', '4');
        map.put('3', 'C');
        map.put('4', '2');
        map.put('5', 'A');
        map.put('6', '6');
        map.put('7', 'E');
        map.put('8', '1');
        map.put('9', '9');
        map.put('a', '5');
        map.put('b', 'D');
        map.put('c', '3');
        map.put('d', 'B');
        map.put('e', '7');
        map.put('f', 'F');
        map.put('A', '5');
        map.put('B', 'D');
        map.put('C', '3');
        map.put('D', 'B');
        map.put('E', '7');
        map.put('F', 'F');
    }

    private String sort(String merge) {
        char[] even = new char[(merge.length() + 1) / 2];
        char[] odd  = new char[merge.length() / 2];
        for (int i = 0, j = 0; i < even.length; j += 2) {
            even[i++] = merge.charAt(j);
        }
        for (int i = 0, j = 1; i < odd.length; j += 2) {
            odd[i++] = merge.charAt(j);
        }
        Arrays.sort(even);
        Arrays.sort(odd);
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < even.length || i < odd.length; i++)  {
            if (i < even.length) {
                s.append(even[i]);
            }
            if (i < odd.length) {
                s.append(odd[i]);
            }
        }
        return s.toString();
    }

    // 找了好久,这里有坑,若字符不在map中,则保留原值
    private String transfer(String str)     {
        StringBuilder s = new StringBuilder();
        for (char ch : str.toCharArray()) {
            s.append(map.getOrDefault(ch, ch));
        }
        return s.toString();

    }

    public String processString(String str1, String str2) {
        String merge = sort(str1 + str2);
        String res = transfer(merge);
        return res;
    }

    public static void main(String[] args) {
        Main solution = new Main();
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String str1 = in.next();
            String str2 = in.next();
            String res = solution.processString(str1, str2);
            System.out.println(res);
        }
    } 
}
全部评论
这里的映射关系,是怎么得出来的。是直接可以copy用的吗,我看很多解析根本不对这个解释。
点赞 回复 分享
发布于 2020-08-31 23:59

相关推荐

08-24 14:45
河南大学 Java
如图所示,我在大二升大三的暑假拿到了美团的日常实习,这一路走来很不容易,所以想分享一下经验,也算是传承,因为一路走来帮助我的人也有很多。第一😇(学习路线),看黑马的视频只是一个入门,我是一直看完了springcloud。第二😇(项目),项目的话没有好坏,只有新奇与陈旧,新的项目用的人少的往往能达到让面试官眼前一亮的效果,所以没有固定的推荐,但是大家可以努力去多做几个项目,这样技术你都学会了,之后可以根据新的项目进行改造。第三😇(八股文),这个真就是跟着网站上背就行了&nbsp;一定要自己整理一套自己的八股笔记,有自己的思考与理解,我理解之后即使几个月不看也能顺滑的说出来。第四😇(面试注意),面试的时候要体现自己的思考,如果你能说出来一整个问题的逻辑那很好,但是不要着急,先说百分之八十,后百分之二十说是自己思考出来的。第五😇(当你所有的都融会贯通),八股项目相结合,八股与八股相串联,问到你一个简单的问题可以扩展延伸让面试官措不及防,被你控制,这样面试官能够问你不会的问题的概率也会大大下降。等待与努力的过程是无比的焦虑与忐忑,当字节三面挂与快手二面挂的时候我已经开始摆烂了,因为双非的机会真的不多,都没把握到,最后还是美团收留了我,任何人的路径都是不可复制的,任何人的经历也是独一无二的,不要受别人影响,加油做自己。接受大家积极发问,也可以私信我哦。
永泽one:美团官网投的嘛佬,根本约面不了
大厂面试问八股多还是项目...
点赞 评论 收藏
分享
09-10 15:05
已编辑
门头沟学院 游戏后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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