java笔试题

xiaoxiao2021-02-28  111

给定一个字符串S,求所有长度小于等于3的子串出现次数,输出结果按出现从大到小排序,如果次数相同,按字典排序。比如,给定字符串"abcdab",输出结果为 a 2 ab 2 b 2 abc 1 bc 1 bcd 1 c 1 cd 1 cda 1 d 1 da 1

dab 1

package cn.bjut.test; import java.util.*; /** * Created by N3verL4nd on 2017/6/6. */ public class Test { private static void printSubString(String s) { if (s != null) { final Map<String, Integer> map = new LinkedHashMap<>(); List<String> list = new ArrayList<>(); for (int start = 0; start < s.length(); start++) { for (int end = start + 1; end <= start + 3 && end <= s.length(); end++) { String subString = s.substring(start, end); if (map.containsKey(subString)) { map.put(subString, map.get(subString) + 1); } else { map.put(subString, 1); list.add(subString); } } } list.sort((o1, o2) -> { int i = map.getOrDefault(o1, 0); int j = map.getOrDefault(o2, 0); return i == j ? o1.compareTo(o2) : (j - i); }); for (String str : list) { System.out.println(str + " " + map.get(str)); } } } public static void main(String[] args) { String s = "abcdab"; printSubString(s); } }

以下的程序实现了链表的数据结构,其核心功能的函数需要补全,请仔细阅读全部代码后完成代码片段。

package cn.bjut.test; /** * Created by N3verL4nd on 2017/6/7. */ public class Link { private static final int NODE_COUNT = 10; private static class Node { private int data; private Node next; public Node(int data, Node next) { this.data = data; this.next = next; } } private static Node Create(int count) { Node list = null; for (int i = count; i > 0; i--) { list = new Node(i, list); } return list; } private static void print(Node list) { while (list != null) { System.out.print(list.data + " "); list = list.next; } System.out.println(); } private static Node reverse(Node list) { Node reverseList = null; while (list != null) { Node p = list.next; list.next = null; reverseList = new Node(list.data, reverseList); list = p; } return reverseList; } public static void main(String[] args) { Node list = Create(NODE_COUNT); print(list); Node reverseList = reverse(list); print(reverseList); } }

转载请注明原文地址: https://www.6miu.com/read-46462.html

最新回复(0)