当前位置: 首页 > news >正文

分享两道Java面试的算法上机题目(后续会持续补充更多)

所有题目参考答案均是小编自己想法,仅供参考,解法很多,大可不必局限,有更优解的大神无解,可评论或私聊博主指正!

题目1

找大串,给定一个字符串其中包含任意组连续字符,我们把超过3个连续相同字符的组合称作为大串,请找出他们的起止位置。如:“叽叽汪汪汪喵喵喵喵渣渣”可分为“叽叽”、“汪汪汪”、“喵喵喵喵 ”、“喳喳”,其中“汪汪汪”和“喵喵喵喵”为大串组。请根据下面提示代码,给出完整思路代码。

public class test1 {public static void main(String[] args) {// 期望的输出为 [[2,4]]System.out.println(run("这是啊啊啊呀"));// 期望的输出为 [[2,4],[5,8]]System.out.println(run("叽叽汪汪汪喵喵喵喵喳喳"));}/*** 找出输入字符串中连续3个以上相同字符的起始和结束位置* @param input 输入字符串*/private static List<List<Integer>> run(String input) {// TODO 在这里实现代码}
}

参考答案 

import java.util.ArrayList;
import java.util.List;/*** @Author:Yunnuo* @Email: ymz@ebox.vip* @Date:2023/8/11 14:14* @Description:*/
public class Test1 {public static void main(String[] args) {// 期望的输出为 [[2,4]]System.out.println(run("这是啊啊啊呀"));// 期望的输出为 [[2,4],[5,8]]System.out.println(run("叽叽汪汪汪喵喵喵喵喳喳"));}/*** 找出输入字符串中连续3个以上相同字符的起始和结束位置* @param input 输入字符串*/private static List<List<Integer>> run(String input) {List<List<Integer>> result = new ArrayList<>();int start = 0;int end = 0;while (end < input.length()) {if (input.charAt(start) == input.charAt(end)) {end++;} else {if (end - start >= 3) {List<Integer> interval = new ArrayList<>();interval.add(start);interval.add(end - 1);result.add(interval);}start = end;}}// 结束if (end - start >= 3) {List<Integer> interval = new ArrayList<>();interval.add(start);interval.add(end - 1);result.add(interval);}return result;}
}

题目2

NASA派出的一个机器人小车分队已经成功着陆火星,出乎意料的是摆在这些小车面前的是一个十分规矩的矩形平原,操作员需要通过远程发送指令序列来控制这些小车移动,在移动的过程中小车上的高清摄像机会将整个平原的地形图完整记录并返回给地球,为了方便导航,我们将平原看成一个二维坐标面,x轴正方向为东,y轴正方向为北,矩形平原的最左下角坐标为(0,0),这样小车的方位便可以使用(x坐标,y坐标,面向方位)来表示,如(0,0,N)表示小车位于平原的左下角并且面向北,操作员可以用指令L,R和M。L和R可以让小车向左或向右旋转90度而不移动,M可以让小车向所面向的方向方位前进一个单位而不改变方向,你需要编写一个程序来计算小车最终的位置与方位,要求用面向对象的思想解决这个问题,你可以参考以下代码片段实现:

public static void main(String[] args) {// 控制器RoverCoordinator roverCoordinator = new RoverCoordinator();// 平面右上角的坐标xroverCoordinator.setMaxX(5);// 平面右上角的坐标yroverCoordinator.setMaxY(5);// 第一辆小车的数据Rover rover1 = new Rover(1,1,2,"N");roverCoordinator.addRover(rover1);// 第二辆小车的数据Rover rover2 = new Rover(2,3,3,"E");roverCoordinator.addRover(rover2);// 通过协调器给小车1发指令roverCoordinator.action(rover1.getId(),"LMLMLMLMM");// 通过协调器给小车2发指令roverCoordinator.action(rover2.getId(),"MMRMMRMRRM");System.out.println(rover1);System.out.println(rover2);}public cless Rover {/*** 小车id*/private int id;/*** 小车坐标x值*/private int x;/*** 小车坐标y值*/private int y;/*** 小车面向方位*/private String direction;public Rover(int id, int x, int y, String direction) {this.id = id;this.x = x;this.y = y;this.direction = direction;} /*** 小车执行单个指令* @param command 指令*/public void action(char command) {// TODO 你的代码}
}public class RoverCoordinator {/*** 所有已注册小车*/private Map<Integer,Rover> roverMap;/*** 地图最大x值*/private int maxX;/*** 地图最大y值*/private int maxY;public RoverCoordinator(){roverMap = new HashMap<>();}public void addRover(Rover rover){roverMap.put(rover.getId(),rover);checkOutOfRange();}/*** 操控指定的小车完成指令序列,同时检查越界问题* @param id 小车ID* @param commandSequence 指令序列*/public void action(int id,String commandSequence){}/*** 判断小车是否越界*/private void checkOutOfRange() {}}

参考答案

RoverCoordinator类

import lombok.Data;import java.util.HashMap;
import java.util.Map;/*** @Author:Yunnuo* @Email: ymz@ebox.vip* @Date:2023/8/11 14:34* @Description: 小车协调通器*/
@Data
public class RoverCoordinator {/*** 所有已注册小车*/private Map<Integer,Rover> roverMap;/*** 地图最大x值*/private int maxX;/*** 地图最大y值*/private int maxY;public RoverCoordinator(){roverMap = new HashMap<>();}public void addRover(Rover rover){roverMap.put(rover.getId(),rover);checkOutOfRange();}/*** 操控指定的小车完成指令序列,同时检查越界问题* @param id 小车ID* @param commandSequence 指令序列*/public void action(int id,String commandSequence){Rover rover = roverMap.get(id);if (rover != null) {for (char command : commandSequence.toCharArray()) {executeCommand(rover, command);checkOutOfRange();}}}private void executeCommand(Rover rover, char command) {if (command == 'L') {rover.turnLeft();} else if (command == 'R') {rover.turnRight();} else if (command == 'M') {rover.move();}}/*** 判断小车是否越界*/private void checkOutOfRange() {for (Rover rover : roverMap.values()) {if (rover.getX() < 0 || rover.getX() > maxX || rover.getY() < 0 || rover.getY() > maxY) {throw new RuntimeException("Rover " + rover.getId() + " 出界了!");}}}
}

Rover类

import lombok.Data;/*** @Author:Yunnuo* @Email: ymz@ebox.vip* @Date:2023/8/11 14:33* @Description:*/
@Data
public class Rover {/*** 小车ID*/private int id;/*** 小车x坐标*/private int x;/*** 小车y坐标*/private int y;/*** 小车面向方位*/private Direction direction;public Rover(int id, int x, int y, String direction) {this.id = id;this.x = x;this.y = y;this.direction = Direction.valueOf(direction);}public void turnLeft() {switch (direction) {case N:direction = Direction.W;break;case E:direction = Direction.N;break;case S:direction = Direction.E;break;case W:direction = Direction.S;break;}}public void turnRight() {switch (direction) {case N:direction = Direction.E;break;case E:direction = Direction.S;break;case S:direction = Direction.W;break;case W:direction = Direction.N;break;}}public void move() {switch (direction) {case N:y++;break;case E:x++;break;case S:y--;break;case W:x--;break;}}@Overridepublic String toString() {return "Rover " + id + ": (" + x + ", " + y + ", " + direction + ")";}
}
enum Direction {N, E, S, W
}

 

相关文章:

分享两道Java面试的算法上机题目(后续会持续补充更多)

所有题目参考答案均是小编自己想法&#xff0c;仅供参考&#xff0c;解法很多&#xff0c;大可不必局限&#xff0c;有更优解的大神无解&#xff0c;可评论或私聊博主指正&#xff01; 题目1 找大串&#xff0c;给定一个字符串其中包含任意组连续字符&#xff0c;我们把超过3个…...

如何使用CSS实现一个平滑过渡效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现平滑过渡效果⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚…...

网络常见设备

目录 1.网络常见设备 1.交换路由设备 2.网络安全设备 3.无线网络设备 4.网络设备生产厂商 1.网络常见设备 当用户通过电子邮件给远方的朋友送去祝福时&#xff0c;一定不会想到这封邮件在网络中将会经历怎样复杂的行程。就好比将一封真实的信件投到邮局后&#xff0c;无法了解…...

数据结构与算法:通往编程高地的必修课(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

python小脚本——批量将PDF文件转换成图片

语言&#xff1a;python 3 用法&#xff1a;选择PDF文件所在的目录&#xff0c;点击 确定 后&#xff0c;自动将该目录下的所有PDF转换成单个图片&#xff0c;图片名称为: pdf文件名.page_序号.jpg 如运行中报错&#xff0c;需要自行根据报错内容按照缺失的库 例如&#x…...

cUrl的介绍和基本使用

cURL 如果你在开发接口的时候&#xff0c;需要调试。那么cUrl将是你必备的技能。也许你用过postman,但这个未免太重量级了。curl将会是你最佳轻量级&#xff0c;调试接口的工具&#x1f600; 1.Curl函数的基本选项✨ 1.1 --request和 -x —request 和 -X 指定与HTTP服务器通信…...

ONLYOFFICE协作空间服务器如何一键安装自托管私有化部署

ONLYOFFICE协作空间服务器如何一键安装自托管私有化部署 如何在 Ubuntu 上部署 ONLYOFFICE 协作空间社区版&#xff1f;https://blog.csdn.net/m0_68274698/article/details/132069372?ops_request_misc&request_id&biz_id102&utm_termonlyoffice%20%E5%8D%8F%E4…...

java分析公司名称:AI智能工具助力提取地名、品牌名、行业名

java分析公司名称&#xff1a;AI智能工具助力提取地名、品牌名、行业名 一、java智能提取地名 /*** 通过“武汉”补全省市区* throws Exception*/public void getPlace4() throws Exception{String r1 "武汉";String fileName2 "D:\\Personal\\Desktop\\txt…...

php 二维数组排序

要对二维数组进行排序&#xff0c;可以使用 PHP 的函数 array_multisort()。该函数可以按照指定的键值对对数组进行排序。 下面是一个示例代码&#xff0c;展示如何对二维数组按照某个键进行排序&#xff1a; // 定义一个二维数组 $students array(array(name > John, ag…...

postgresql 性能调优

性能调优是为了提高 PostgreSQL 数据库的性能和响应速度。下面是一些常见的 PostgreSQL 性能调优技巧&#xff1a; 1 确保合适的硬件资源&#xff1a;确保数据库服务器具有足够的内存、处理器和磁盘空间&#xff0c;以满足数据库负载的需求。2 优化查询语句&#xff1a;检查并优…...

派森 #P128. csv存json格式

描述 编写一个 Python 程序&#xff0c;读取movie.in&#xff08;csv格式&#xff0c;utf-8编码&#xff09; 的数据&#xff0c;将数据转成保存到movie.out(接送格式&#xff0c;utf-8编码)文件中。 格式 输入 movie.in文件&#xff0c;测试格式&#xff0c;utf-8编码。 …...

iPhone开启“轻点唤醒”功能但点击屏幕无反应怎么解决?

iPhone的“轻点唤醒”功能启用时&#xff0c;用户只需手指轻触或点击手机屏幕即可快速唤醒设备&#xff0c;无需按压任何按钮。然而&#xff0c;有些用户在使用“轻点唤醒”功能唤醒屏幕时&#xff0c;遇到该功能失灵&#xff0c;无法正常唤醒屏幕的情况&#xff0c;这是怎么回…...

论AI与大数据之间的关系

前言 在21世纪&#xff0c;"AI"和"大数据"已经成为科技领域的热门词汇。它们不仅是创新的代名词&#xff0c;更是现代技术发展的双翼。然而&#xff0c;很多人对于AI与大数据之间的关系仍然停留在表面的理解。本文旨在深入探讨这两者之间的深厚关系&#…...

6.ES基础概念及术语详细解读

一、Elasticsearch概述&#xff1a; ES是基于Lucene的搜索服务器&#xff0c;它提供了一个分布式多用户能力的全问搜索引擎&#xff0c;且ES支持RestFulweb风格的url访问。ES是基于Java开发的开源搜索引擎&#xff0c;设计用于云计算&#xff0c;能够达到实时搜索&#xff0c;…...

大语言模型微调实践——LoRA 微调细节

1. 引言 近年来人工智能领域不断进步&#xff0c;大语言模型的崛起引领了自然语言处理的革命。这些参数量巨大的预训练模型&#xff0c;凭借其在大规模数据上学习到的丰富语言表示&#xff0c;为我们带来了前所未有的文本理解和生成能力。然而&#xff0c;要使这些通用模型在特…...

国内ChatGPT对比与最佳方案

很久没写内容了&#xff0c;主要还是工作占据了太多时间。简单分享下我这段时间的研究吧,由于时间仓促&#xff0c;有很多内容没有具体写&#xff0c;请自行到我分享的网站体验查看。 前言 ChatGPT 的出现确实在很大程度上改变了世界。许多人已经亲身体验到了ChatGPT作为一个…...

绝美的古诗词AI作画,惊艳到我了!

前言 时光荏苒&#xff0c;科技的飞速发展催生出了许多令人惊叹的创新成果。近年来&#xff0c;人工智能技术在艺术领域的应用日益引人注目&#xff0c;其中最为引人瞩目的莫过于AI作画。这项技术将传统的古诗词与现代的人工智能相结合&#xff0c;创造出一幅幅令人叹为观止的…...

数据结构—排序

8.排序 8.1排序的概念 什么是排序&#xff1f; 排序&#xff1a;将一组杂乱无章的数据按一定规律顺序排列起来。即&#xff0c;将无序序列排成一个有序序列&#xff08;由小到大或由大到小&#xff09;的运算。 如果参加排序的数据结点包含多个数据域&#xff0c;那么排序往…...

GraphScope,开源图数据分析引擎的领航者

文章首发地址 GraphScope是一个开源的大规模图数据分析引擎&#xff0c;由Aliyun、阿里巴巴集团和华为公司共同开发。GraphScope旨在为大规模图数据处理和分析提供高性能、高效率的解决方案。 Github地址&#xff1a; https://github.com/alibaba/GraphScope GraphScope 的重…...

【Linux】邮件服务器搭建 postfix+dovecot+mysql (终极版 超详细 亲测多遍无问题)

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 前言基础原理准备工作一 、安装关于权…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...