java面试题:数字与字母的映射表

news/发布时间2024/5/15 4:56:22

前言

好记性不如烂笔头。


问题:
现在有一个数字与字母的映射表,且有以下规则:

映射表:
数字 字母
3 A
7 B
9 C

规则:
1.碰到当前数字时,使用字母替换,例如,3-> A
2.碰到当前数字的倍数时,使用字母替换, 例如:6->A
3.碰到多个数字的倍数时,使用多个对应的字母替代,例如:15 -> AB,21->AC
请根据映射表和规则,给出0-100之间的转换结果,提示:不要直接在for循环中使用if判断,尽可能的使用设计模式。

解决方法:策略模式
策略模式(Strategy Pattern)是一种行为设计模式,它使你能够在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。

在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象更改 context 对象的执行算法。

策略模式通常涉及三个角色:

Context(上下文):这个类用一个 Strategy(策略)对象来配置其行为。Context 维护一个对 Strategy 对象的引用,可调用其接口来执行所需策略。

Strategy(策略):这是一个接口或抽象类,定义了所有支持的算法的公共接口。Context 使用这个接口来调用具体的策略实现。

ConcreteStrategy(具体策略):实现了 Strategy 接口的具体类。每个具体策略类都提供了不同的算法或行为。

代码实例:
一、定义策略接口

package com.service;/***@Description  定义策略接口*@Author yingluo*@Date 2024-2-23**/
public interface NumberToLetterStrategy {public String convert(int number);
}

二、各个数字实现类

package com.service.impl;import com.service.NumberToLetterStrategy;/*** Description: 数字3的映射规则创建实现类* Author:yingluo* Date:2024/2/23**/
public class ThreeStrategy implements NumberToLetterStrategy {@Overridepublic String convert(int number) {if(number == 3 || number % 3 == 0){return "A";}return "";}
}
package com.service.impl;import com.service.NumberToLetterStrategy;/*** Description: 数字7的映射规则创建实现类* Author:yingluo* Date:2024/2/23**/
public class SevenStrategy implements NumberToLetterStrategy {@Overridepublic String convert(int number) {if(number == 7 || number % 7 == 0){return "B";}return "";}
}
package com.service.impl;import com.service.NumberToLetterStrategy;/*** Description: 数字9的映射规则创建实现类* Author:yingluo* Date:2024/2/23**/
public class NineStrategy implements NumberToLetterStrategy {@Overridepublic String convert(int number) {if(number == 9 || number % 9 == 0){return "C";}return "";}
}

三、使用策略对象来执行映射

package com.control;import com.service.NumberToLetterStrategy;
import com.service.impl.NineStrategy;
import com.service.impl.SevenStrategy;
import com.service.impl.ThreeStrategy;import java.util.HashMap;
import java.util.Map;/*** Description: 使用策略对象来执行映射* Author:yingluo* Date:2024/2/23**/
public class NumberToLetterContext {private Map<Integer, NumberToLetterStrategy> strategies;public NumberToLetterContext(){strategies = new HashMap<>();strategies.put(3, new ThreeStrategy());strategies.put(7, new SevenStrategy());strategies.put(9, new NineStrategy());}public String convert(int number){StringBuffer result = new StringBuffer();for (NumberToLetterStrategy strategy : strategies.values()){result.append(strategy.convert(number));}return result.toString();}
}

四、测试类

package com;import com.control.NumberToLetterContext;/*** Description: main方法测试类* Author:yingluo* Date:2024/2/23**/
public class Test {public static void main(String[] args) {NumberToLetterContext context = new NumberToLetterContext();for (int i=0 ; i<=100 ; i++){System.out.println(i+"->"+context.convert(i));}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/LZVL/3914.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

ChatGPT调教指南 | 咒语指南 | Prompts提示词教程(一)

在我们开始探索人工智能的世界时&#xff0c;了解如何与之有效沉浸交流是至关重要的。想象一下&#xff0c;你手中有一把钥匙&#xff0c;可以解锁与OpenAI的GPT模型沟通的无限可能。这把钥匙就是——正确的提示词&#xff08;prompts&#xff09;。无论你是AI领域的新手&#…

Linux线程同步(3)生产者与消费者、条件变量与信号量

1.生产者与消费者的概念 生产者与消费者&#xff08;Producer-Consumer&#xff09;问题&#xff0c;是一个经典的并发编程问题。在这个问题中&#xff0c;涉及到两类进程&#xff1a;生产者和消费者。生产者负责生产数据&#xff0c;并将其放入一个缓冲区中&#xff1b;消费者…

C# (WebApi)整合 Swagger

SpringBoot-整合Swagger_jboot整合swagger-CSDN博客 C# webapi 也可以整合Swagger webapi运行其实有个自带的HELP页面 但是如果觉得UI不好看&#xff0c;且没办法显示方法注释等不方便的操作&#xff0c;我们也可以整合Swagger 一、使用NuGet控制台安装Swagger 在菜单中选择…

网络安全笔记总结

IAE引擎 1.深度检测技术--DFI和DPI技术 DFI和DPI都是流量解析技术&#xff0c;对业务的应用、行为及具体信息进行识别&#xff0c;主要应用于流量分析及流量检测。 DPI&#xff1a;深度包检测技术 DPI是一种基于应用层的流量检测和控制技术&#xff0c;对流量进行拆包&#x…

【Spring】 AOP面向切面编程

文章目录 AOP是什么&#xff1f;一、AOP术语名词介绍二、Spring AOP框架介绍和关系梳理三、Spring AOP基于注解方式实现和细节3.1 Spring AOP底层技术组成3.2 初步实现3.3 获取通知细节信息3.4 切点表达式语法3.5 重用&#xff08;提取&#xff09;切点表达式3.6 环绕通知3.7 切…

Matplotlib绘制炫酷散点图:从二维到三维,再到散点图矩阵的完整指南与实战【第58篇—python:Matplotlib绘制炫酷散点图】

文章目录 Matplotlib绘制炫酷散点图&#xff1a;二维、三维和散点图矩阵的参数说明与实战引言二维散点图三维散点图散点图矩阵二维散点图进阶&#xff1a;辅助线、注释和子图三维散点图进阶&#xff1a;动画效果和交互性散点图矩阵进阶&#xff1a;调整样式和添加密度图总结与展…

鸿蒙开发(五)鸿蒙UI开发概览

从用户角度来讲&#xff0c;一个软件拥有好看的UI&#xff0c;那是锦上添花的事情。再精确的算法&#xff0c;再厉害的策略&#xff0c;最终都得通过UI展现给用户并且跟用户交互。那么&#xff0c;本篇一起学习下鸿蒙开发UI基础知识&#xff0c;认识下各种基本控件以及使用方式…

python 3.7.3的安装

参考 Linux安装Python3.7-良许Linux教程网 (lxlinux.net) 1、Index of /ftp/python/3.7.9/ 1、安装gcc&#xff0c;yum -y install gcc 2、 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel…

Llama2模型的优化版本:Llama-2-Onnx

Llama2模型的优化版本&#xff1a;Llama-2-Onnx。 Llama-2-Onnx是Llama2模型的优化版本。Llama2模型由一堆解码器层组成。每个解码器层&#xff08;或变换器块&#xff09;由一个自注意层和一个前馈多层感知器构成。与经典的变换器相比&#xff0c;Llama模型在前馈层中使用了不…

vue3 toRefs之后的变量修改方法

上效果 修改值需要带上解构之前的对象名obj&#xff0c; changeName:()>{ // toRefs 解决后变量修改值方法&#xff1a; 解构前变量.字段新值 obj.name FEIFEI; } } 案例源码 <!DOCTYPE html> <html> <head><me…

普中51单片机学习(十一)

独立按键 独立按键原理 按键在闭合和断开时触电存在抖动现象 硬件消抖电路如下 实验代码 #include "reg52.h" typedef unsigned char u8; typedef unsigned int u16;void delay(u16 i) {while(i--); } sbit ledP2^0; sbit k1P3^1;void keypro() {if(k10){delay(1…

yolov9目标检测报错AttributeError: ‘list‘ object has no attribute ‘device‘

最近微智启软件工作室在运行yolov9目标检测的detect.py测试代码时&#xff0c;报错&#xff1a; File “G:\down\yolov9-main\yolov9-main\detect.py”, line 102, in run pred non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_detmax_det) Fil…

css实现悬浮卡片

结果展示 html代码 <!doctype html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <meta name"viewport" content"…

《图解设计模式》笔记(二)交给子类

三、Template Method模式&#xff1a;将具体处理交给子类 示例程序类图 public static void main(String[] args) {// 生成一个持有H的CharDisplay类的实例AbstractDisplay d1 new CharDisplay(H);// 生成一个持有"Hello, world."的StringDisplay类的实例AbstractD…

pytest结合Allure生成测试报告

文章目录 1.Allure配置安装2.使用基本命令报告美化1.**前置条件**2.**用例步骤****3.标题和描述****4.用例优先级**3.进阶用法allure+parametrize参数化parametrize+idsparametrize+@allure.title()4.动态化参数5.环境信息**方式一****方式二**6.用例失败截图1.Allure配置安装 …

PNPM 批量检查和更新项目依赖

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

【前端素材】推荐优质后台管理系统Frest平台模板(附源码)

一、需求分析 定义 后台管理系统是一种用于管理和控制网站、应用程序或系统后台操作的软件工具&#xff0c;通常由授权用户&#xff08;如管理员、编辑人员等&#xff09;使用。它提供了一种用户友好的方式来管理网站或应用程序的内容、用户、数据等方面的操作&#xff0c;并…

Apache Commons开源的工具库介绍

Apache Commons 是 Apache 软件基金会主持的一个项目&#xff0c;旨在提供一系列可重用的 Java 组件。这些组件覆盖了从数据封装、文本处理到网络通信等各个方面&#xff0c;是 Java 开发中常用的一系列工具库。Apache Commons 项目下的各个库通常以 "commons-" 开头…

神经网络系列---分类度量

文章目录 分类度量混淆矩阵&#xff08;Confusion Matrix&#xff09;&#xff1a;二分类问题二分类代码多分类问题多分类宏平均法:多分类代码多分类微平均法&#xff1a; 准确率&#xff08;Accuracy&#xff09;&#xff1a;精确率&#xff08;Precision&#xff09;&#xf…

浅谈SpringMVC

什么是MVC模式 MVC&#xff1a;MVC是一种设计模式 MVC的原理图&#xff1a; 分析&#xff1a; 1&#xff1a;M-Model 模型&#xff08;完成业务逻辑&#xff1a;有javaBean构成&#xff0c;servicedaoentity&#xff09; 2&#xff1a;V-View 视图&#xff08;做界面的展示…
推荐文章