zoukankan      html  css  js  c++  java
  • 机试题总结

    1.实现括号的匹配

    package test;
    
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    import java.util.Stack;
    
    /**
     * 括号匹配==()(){[]{}}
     * 
     * @author Administrator
     *
     */
    public class BracketMatch {
    
        public static void main(String[] args) {
            // 利用栈进行匹配,左括号就进栈,遇到右括号出栈,匹配出栈的和右括号是否匹配
    
            String testStr = "{{3534{{}}ertr4534[543](364())";
            char[] charArray = testStr.toCharArray();
            boolean result = true;
    
            // 括号规则
            Map<Character, Character> rules = new HashMap<>();
            rules.put('(', ')');
            rules.put('[', ']');
            rules.put('{', '}');
    
            Set<Character> keySet = rules.keySet();
            Collection<Character> values = rules.values();
            Stack<Character> stack = new Stack<>();
            for (Character c : charArray) {
                if (c == null) {
                    continue;
                }
    
                // key包含的进行入栈
                if (keySet.contains(c)) {
                    stack.push(c);
                    continue;
                }
    
                // 值包含的进行出栈
                if (values.contains(c)) {
                    if (stack.isEmpty()) {
                        result = false;
                        break;
                    }
    
                    Character popedC = stack.pop();
                    // 判断是否相等
                    boolean result1 = validateNotSure(c, popedC, ')', '(');
                    boolean result2 = validateNotSure(c, popedC, '}', '{');
                    boolean result3 = validateNotSure(c, popedC, ']', '[');
                    if (!result1 && !result2 && !result3) {
                        result = false;
                        break;
                    }
                }
            }
    
            // 判断栈是否有数据
            result = result && stack.isEmpty();
    
            System.out.println(result);
        }
    
        private static boolean validateNotSure(Character c, Character popedC, Character cValue, Character popedCValue) {
            return c.equals(cValue) && popedC.equals(popedCValue);
        }
    }

    2.合并两个有序链表

    package test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.commons.lang3.StringUtils;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.Getter;
    import lombok.Setter;
    
    @Getter
    @Setter
    public class NodeList<T> {
    
        private Node<T> first;
    
        private Node<T> last;
    
        private int size;
    
        public boolean add(T value) {
            if (last == null) {
                addFirst(value);
                return true;
            }
    
            addNormalNode(value);
            return true;
        }
    
        private void addNormalNode(T value) {
            Node<T> node = new Node<>(last, value, null);
            last.setNext(node);
            this.last = node;
            size++;
        }
    
        private void addFirst(T value) {
            Node<T> first = new Node<>(null, value, null);
            this.first = first;
            this.last = first;
            size++;
        }
    
        @Override
        public String toString() {
            if (this.first == null) {
                return "[]";
            }
    
            Node<T> current = first;
            List<T> result = new ArrayList<>();
            while (current != null) {
                result.add(current.getValue());
                current = current.getNext();
            }
    
            return StringUtils.join(result);
        }
    
        public void combineNode(NodeList<T> nodes) {
            if (nodes == null || nodes.size == 0) {
                return;
            }
    
            Node<T> current = nodes.getFirst();
            while (current != null) {
                add(current.getValue());
                current = current.getNext();
            }
        }
    
        @Data
        @AllArgsConstructor
        class Node<T> {
            private Node<T> prev;
    
            private T value;
    
            private Node<T> next;
        }
    
        public static void main(String[] args) {
            NodeList<String> list = new NodeList<>();
            list.add("1");
            list.add("2");
            list.add("3");
    
            NodeList<String> list2 = new NodeList<>();
            list2.add("2");
            list2.add("3");
            list2.add("4");
    
            list.combineNode(list2);
            System.out.println(list);
        }
    
    }
  • 相关阅读:
    Rabbitmq的使用四_Java Client方式使用Topic模式
    CentOS7安装Redis
    nmon文件结果分析
    nmon安装
    jmeter+ant+jenkins
    jenkins插件下载加速
    jmeter:多机联合负载
    jmeter Linux负载机出错Server failed to start:
    jenkins安装
    fiddler:筛选请求响应
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/13415817.html
Copyright © 2011-2022 走看看