练手小题(哈希表搜索树)

简介: 练手小题(哈希表搜索树)

1、旧键盘

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出

肯定坏掉的那些键。

输入描述:

输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、

以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。


输出描述:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。

示例1

1. 输入
2. 7_This_is_a_test<br/>_hs_s_a_es
3. 输出
4. 7TI

首先我们分析一下思路哈:简单理解一下题目:就是说要让我们输出字符串1没有在字符串2中的部分(也就是字符串1中多出来的那部分,同时每个字符(大写)按照字符串中出现的顺序只可以输出1次即可),所以我们可以写一个方法来实现这个功能:首先我们要把两个字符串都改为大写的字符数组,之后用一个HashSet把s2出现的字符存放起来,然后遍历s1所在的字符数组ch1,如果HashSet中不包含ch1中的元素就把它存放到一个List当中,最后打印List中的内容即可。

AC代码:

1. import java.util.*;
2. public class Main{
3. 
4. public static void main(String[]args){
5.         Scanner scan=new Scanner(System.in);
6. while(scan.hasNextLine()){
7.             String s1=scan.nextLine();
8.             String s2=scan.nextLine();
9.             fun(s1,s2);
10.         }
11.     }
12. public static void fun(String s1,String s2){
13. char[]ch1=s1.toUpperCase().toCharArray();
14. char[]ch2=s2.toUpperCase().toCharArray();
15.         HashSet<Character>set1=new HashSet<>();
16. for(char x:ch2){
17.             set1.add(x);
18.         }
19.         List<Character> list=new ArrayList<>();
20. 
21. for(char x:ch1){
22. if(!set1.contains(x)){
23. if(!list.contains(x)){
24.                    list.add(x);
25.                }
26.             }
27.         } 
28. for(char x:list){
29.             System.out.print(x);
30.         }
31.     }
32. }

2、二叉搜索树与双向链表

描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示

数据范围:输入二叉树的节点数 0≤n≤1000,二叉树中每个节点的值0≤val≤1000

要求:空间复杂度O(1)O(1)(即在原树上操作),时间复杂度 O(n)O(n)

注意:

1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继

2.返回链表中的第一个节点的指针

3.函数返回的TreeNode,有左右指针,其实可以看成一个双向链表的数据结构

4.你不用输出双向链表,程序会根据你的返回值自动打印输出

输入描述:

二叉树的根节点

返回值描述:

双向链表的其中一个头节点。

示例1

1. 输入:
2. {10,6,14,4,8,12,16}
3. 返回值:
4. From left to right are:4,6,8,10,12,14,16;From right to left are:16,14,12,10,8,6,4;
5. 说明:
6. 输入题面图中二叉树,输出的时候将双向链表的头节点返回即可。

示例2

1. 输入:
2. {5,4,#,3,#,2,#,1}
3. 返回值:
4. From left to right are:1,2,3,4,5;From right to left are:5,4,3,2,1;
5. 
6. 说明:
7. 5
8.                   /
9. 4
10.               /
11. 3
12.           /
13. 2
14.       /
15. 1
16. 树的形状如上图

AC代码:

1. /**
2. public class TreeNode {
3.     int val = 0;
4.     TreeNode left = null;
5.     TreeNode right = null;
6. 
7.     public TreeNode(int val) {
8.         this.val = val;
9. 
10.     }
11. 
12. }
13. */
14. public class Solution {
15. //返回的第一个指针,即为最小值,先定为null
16. public TreeNode head = null;  
17. //中序遍历当前值的上一位,初值为最小值,先定为null
18. public TreeNode pre = null;   
19. public TreeNode Convert(TreeNode pRootOfTree) {
20. if(pRootOfTree == null)
21. //中序递归,叶子为空则返回
22. return null;     
23. //首先递归到最左最小值  
24.         Convert(pRootOfTree.left); 
25. //找到最小值,初始化head与pre
26. if(pre == null){       
27.             head = pRootOfTree;
28.             pre = pRootOfTree;
29.         }
30. //当前节点与上一节点建立连接,将pre设置为当前值
31. else{       
32.             pre.right = pRootOfTree;
33.             pRootOfTree.left = pre;
34.             pre = pRootOfTree;
35.         }
36.         Convert(pRootOfTree.right);
37. return head;
38.     }
39. }


相关文章
|
存储 网络安全
分布式存储glusterfs详解
1.什么是glusterfs glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数pb存储容量和数千客户端,通过网络互联成一个并行的网络文件系统,具有可扩展性、高性能、高可用等特点 常用资源:
1087 0
分布式存储glusterfs详解
|
7月前
|
人工智能 JavaScript 测试技术
云效+DeepSeek 打造高效代码评审的新途径
本文介绍如何在云效平台上利用DeepSeek等大模型实现AI智能代码评审。通过创建云效组织、获取API令牌、配置Flow自定义步骤、导入示例代码库及创建流水线,结合单元测试和代码扫描功能,实现自动化代码审查。此方案显著减少人工评审工作量,提升代码质量与开发效率,确保项目快速且安全地上线。
|
6月前
|
数据可视化 Python
【负荷预测】基于变分模态分解(VMD-CNN-LSTM)的短期电力负荷预测【Python】
本项目实现了一种基于变分模态分解(VMD)的短期电力负荷预测模型——VMD-CNN-LSTM。通过VMD技术将原始电力负荷数据分解为多个平稳子序列,结合温度和时间等特征构建矩阵,输入CNN-LSTM模型训练,最终叠加重构得到预测结果。此方法有效应对非线性和非平稳性引起的误差,精度高且稳定性强。程序采用Python编写,注释清晰,运行稳定,并提供直观的可视化结果。附带部分代码及详细运行结果展示,下载链接已提供。
|
8月前
|
人工智能 Java 程序员
一文彻底搞定电阻元件
电阻元件是限流器件,通过其电流与两端电压成正比(V=IR),阻值受温度、材料等影响。按特性分为线性与非线性,材料上有碳膜、金属膜等,用途涵盖限流、分压、偏置、滤波等。标称阻值有允许偏差,额定功率和最高工作电压需注意。色标法和直接读取法可用于识别阻值,万用表测量时需关闭电源并选择合适量程。电阻在电路设计中不可或缺,掌握其特性和应用对电子工程师至关重要。
407 0
一文彻底搞定电阻元件
|
10月前
|
供应链 数据可视化 数据挖掘
企业服务品牌深度解析:销售易、用友、白码功能与特色对比
在企业服务领域,销售易、用友、白码等品牌凭借独特的产品和解决方案占据重要地位。销售易专注于CRM,提供客户管理、销售自动化、市场营销等功能,提升销售效率与客户满意度。用友作为领先的企业服务提供商,涵盖ERP、财务管理、人力资源管理等,助力企业资源优化配置。白码则以低代码开发平台为核心,支持快速构建业务应用,具备高度可定制化和易于维护的特点。三者各具特色,共同推动企业数字化转型。
Element UI 带快捷编辑的多行输入框(含光标位置的获取和指定)
Element UI 带快捷编辑的多行输入框(含光标位置的获取和指定)
186 0
|
10月前
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
【飞天技术沙龙—阿里云金融量化策略回测Workshop】在上海诺亚财富中心正式举行,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。
|
弹性计算 人工智能 运维
OS Copilot产品体验测评:运维辅助的革新
阿里云推出基于大模型的Linux智能助手OS Copilot,专为Alibaba Cloud Linux设计,旨在通过智能化功能革新操作系统体验。
295 35
OS Copilot产品体验测评:运维辅助的革新
|
Java 测试技术 API
如何检查字符串是否仅包含数字
【8月更文挑战第22天】
635 0