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

面试经典150题(15-19)

leetcode 150道题 计划花两个月时候刷完,今天(第七天)完成了5道(15-19)150:

今天这些都是我之前做过的,还有就是今天的全都是模拟过程。。所以做的还算快。

15(13. 罗马数字转整数)

题目描述:

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 49。
X 可以放在 L (50) 和 C (100) 的左边,来表示 4090。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400900。
给定一个罗马数字,将其转换成整数。

第一版(直接模拟过程了,没有啥算法,没有啥技术含量。。想不出来更好的)

class Solution {public int romanToInt(String s) {int len=s.length();int index=0;int sum=0;while(index<len){if(s.charAt(index)=='I'){if(index+1<len&&s.charAt(index+1)=='V'){sum+=4;index++;}  else if(index+1<len&&s.charAt(index+1)=='X'){sum+=9;index++;}else{sum+=1;}     }else if(s.charAt(index)=='X'){if(index+1<len&&s.charAt(index+1)=='L'){sum+=40;index++;}  else if(index+1<len&&s.charAt(index+1)=='C'){sum+=90;index++;}else{sum+=10;}     }else if(s.charAt(index)=='C'){if(index+1<len&&s.charAt(index+1)=='D'){sum+=400;index++;}  else if(index+1<len&&s.charAt(index+1)=='M'){sum+=900;index++;}else{sum+=100;} }else if(s.charAt(index)=='V'){sum+=5;}else if(s.charAt(index)=='L'){sum+=50;}else if(s.charAt(index)=='D'){sum+=500;}else if(s.charAt(index)=='M'){sum+=1000;}index++;}return sum;}
}

16 (12. 整数转罗马数字)

题目描述:
和上面这个一样 这个是数字转罗马数字:数字范围为:
1 <= num <= 3999
第一版:(还是模拟过程反着来,但是这个是leetcode中等题。。上面的是简单题)

class Solution {public String intToRoman(int num) {StringBuilder sb=new StringBuilder();while(num!=0){if(num>=1000){int qNum=num/1000;for(int i=0;i<qNum;i++){sb.append("M");}num%=1000;}else if(num>=100){int bNum=num/100;if(bNum==9){sb.append("CM");bNum-=9;}if(bNum>=5){sb.append("D");bNum-=5;}if(bNum==4){sb.append("CD");bNum-=4;}for(int i=0;i<bNum;i++){sb.append("C");}num%=100;}else if(num>=10){int sNum=num/10;if(sNum==9){sb.append("XC");sNum-=9;}if(sNum>=5){sb.append("L");sNum-=5;}if(sNum==4){sb.append("XL");sNum-=4;}for(int i=0;i<sNum;i++){sb.append("X");}num%=10;}else if(num>=1){if(num==9){sb.append("IX");num-=9;}if(num>=5){sb.append("V");num-=5;}if(num==4){sb.append("IV");num-=4;}for(int i=0;i<num;i++){sb.append("I");}break;}}return sb.toString();}
}

17 (58. 最后一个单词的长度)

题目描述:

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

第一版(这题我一看,很快,很快啊 直接 split 然后return 哈哈哈,但是一看解题意思要自己写。。)

class Solution {public int lengthOfLastWord(String s) {String[] strs=s.trim().split(" ");return strs[strs.length-1].length();}
}

第二版(算是自己写版,其实没必要都有接口了直接用多好,希望笔试时候出题人也能这样想。。)

class Solution {public int lengthOfLastWord(String s) {char[] chars=s.toCharArray();int index=chars.length-1;int len=0;while(index>=0){if(chars[index]!=' '){break;}index--;}while(index>=0){if(chars[index--]!=' '){len++;}else{break;}}return len;}
}

18 (14. 最长公共前缀)

题目描述:

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""

这个题我知道有个横向和纵向的,但是每次想不到横向的。。。
第一版(纵向的也是好想到的)

class Solution {public String longestCommonPrefix(String[] strs) {if(strs.length<=1){return strs[0];}for(int i=0;i<strs[0].length();i++){char temp=strs[0].charAt(i);for(int j=1;j<strs.length;j++){if(i==strs[j].length()||strs[j].charAt(i)!=temp){return strs[0].substring(0,i);}}}return strs[0];}
}

第二版(横向的,我感觉有种逆思维的感觉,不是每次能想出来,他是用其中一个去和剩下的求最长公共序列,然后再用求出来公共序列再去和剩下的求,想法很好但不是很好想)

class Solution {public String longestCommonPrefix(String[] strs) {// 在写一下横向的 每次都想不起来横向的if(strs==null||strs.length<=0){return "";}int count=strs.length;if(count==1){return strs[0];}String preString=strs[0];for(int i=1;i<count;i++){preString=commonPrefix(preString,strs[i]);if(preString.length()==0){return preString;}}return preString;}public String commonPrefix(String str1,String str2) {int len1=str1.length();int len2=str2.length();int index=0;while(index<len1&&index<len2&&str1.charAt(index)==str2.charAt(index)){index++;}return str1.substring(0,index);}
}

19 (151. 反转字符串中的单词)题目描述:

给你一个字符串 s ,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

第一版(这个题也有种让自己去实现已经有的api,我只写了一版,没有写自己实现的api…感觉太麻烦了有就用就行了。。)

class Solution {public String reverseWords(String s) {String[] strs=s.trim().split(" ");int len=strs.length;List<String> temp=new ArrayList();for(int i=len-1;i>=0;i--){if(!"".equals(strs[i])){temp.add(strs[i]);}}// 这个方法真的用的时候很多。。return String.join(" ",temp);}
}

加油早点跳槽!!今天就是把之前写过的回顾了一边,还行简单的没忘。。哦,我没有写困难的题目。。
早日跳槽!!

相关文章:

面试经典150题(15-19)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第七天&#xff09;完成了5道(15-19)150&#xff1a; 今天这些都是我之前做过的&#xff0c;还有就是今天的全都是模拟过程。。所以做的还算快。 15&#xff08;13. 罗马数字转整数&#xff09; 题目描述&a…...

Linux下的网络服务

一般来说&#xff0c;各种操作系统在网络方面的性能比较是这样的顺序BSD>Linux>Win NT>Win 9X, 由此说来&#xff0c;Linux的网络功能仅次于UNIX&#xff0c;而强于Win NT和其它的视窗系列产品&#xff0c;对于Win2000我还不能评价太多&#xff0c;因为不是很熟。 Lin…...

制造业对于IT软硬件监控和摄像头故障监控的需求

制造业对于生产线的自动化和智能化需求较高&#xff0c;IT监控运维管理软件在制造业的应用也日益普及。监控易为制造业提供了一系列定制化的解决方案&#xff0c;助力企业实现生产线的智能化和高效化。 随着制造业的数字化转型和智能化升级&#xff0c;IT运维管理软件的需求也在…...

idea一些报错

java: 非法字符: \ufeff 使用IDEA修改文件编码 在IDEA右下角&#xff0c;将编码改为GBK&#xff0c;再转为UTF-8&#xff0c;重新启动项目。具体步骤如下&#xff1a; 在IDEA右下角找到UTF-8字样的编码格式设计项&#xff0c;点击选择第一项GBK&#xff0c;然后Convert&#xf…...

【Java系列】详解多线程(二)——Thread类及常见方法(上篇)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习Java的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一…...

Android Dialog 弹出时,隐藏 navigation bar

1、概述 一些场合&#xff0c;要求界面是全屏的&#xff0c;然而在全屏界面下&#xff0c;弹出dialog 又会导致虚拟按键栏重新弹出来&#xff0c;也是比较难受的。(而且查了非常多方法都是不能完美的解决这个问题&#xff0c;要么是压根不能用&#xff0c;要么是会闪一下虚拟栏…...

LeetCode(Hot100)——1:两数之和

方法1&#xff1a;暴力求解 利用两次for循环来处理&#xff0c; 外循环确定一个数字&#xff0c; 利用内循环不断求和来判断是否两数之和为target&#xff0c;来进行求解。 public class LeetCode1 {Test//测试方法public void test() {int [] nums{2,7,11,15};int target9;/…...

【Qt】报错error:undefined reference to `vtable for Consumer‘的解决方法

1. 问题原因 在创建完程序后&#xff0c;点击构建&#xff0c;显示编译错误。 错误问题如下: error: undefined reference to vtable在编译输出中查看显示如下&#xff1a; error:undefined reference to vtable for custom2. 原因分析 这个错误通常是因为 C 的虚函数表&am…...

【linux系统】用户功能与权限详细总结

前言 菜某的笔记总结&#xff0c;有错误还请指正。 linux用户的概念与root用户 这么理解&#xff1a;一台电脑有多个操作者&#xff0c;每个操作者只能无限制操作自己文件夹中的东西&#xff0c;其他地方的操作需要给与相应权限才能操作。 root用户&#xff1a;就是最高级的…...

ELK简单介绍二

学习目标 能够部署kibana并连接elasticsearch集群能够通过kibana查看elasticsearch索引信息知道用filebeat收集日志相对于logstash的优点能够安装filebeat能够使用filebeat收集日志并传输给logstash kibana kibana介绍 Kibana是一个开源的可视化平台,可以为ElasticSearch集群…...

video 标签 各种属性及所有事件监听

网页中的video 属性和事件&#xff0c;用于计算观看视频的时长&#xff0c;其他用法备存。 <!-- video 不支持 IE8及以下版本浏览器&#xff0c;支持三种视频格式&#xff1a;MP4&#xff0c;WebM 和 Ogg --><video src"test.mp4" controls width"400…...

TS中断言、转换的应用

1.TS 类型断言定义 把两种能有重叠关系的数据类型进行相互转换的一种 TS 语法&#xff0c;把其中的一种数据类型转换成另外一种数据类型。类型断言和类型转换产生的效果一样&#xff0c;但语法格式不同。 2.TS 类型断言语法格式 A 数据类型的变量 as B 数据类型 。 A 数据类…...

【代码随想录算法训练营-第四天】【链表】24,19, 面试题 02.07,142

24. 两两交换链表中的节点 第一遍-递归-小看了一下题解 思路&#xff1a; 读了两遍题目才理解…相邻节点的交换&#xff0c;这个操作很容易实现&#xff0c;但需要一个tmpNode因为是链表的题目&#xff0c;没开始思考之前先加了dummyNode&#xff0c;还真管用把dummyNode作为…...

代理设计模式

1. 代理模式 1.1 代理模式的原理分析 代理设计模式&#xff08;Proxy Design Pattern&#xff09;是一种结构型设计模式&#xff0c;它为其他对象提供一个代理对象&#xff0c;以控制对这个对象的访问。代理模式可以用于实现懒加载、安全访问控制、日志记录等功能。 代理模式…...

ubuntu安装docker及docker常用命令

docker里有三个部分 daemon 镜像 和 容器 我们需要了解的概念 容器 镜像 数据卷 文章目录 docker命令docker镜像相关命令docker容器相关命令数据卷ubuntu安装docker docker命令 #启动&#xff0c;停止&#xff0c;重启docker systemctl start docker systemctl stop docker s…...

STM32-TIM定时器输出比较

目录 一、输出比较简介 二、PWM简介 三、输出比较通道&#xff08;通用&#xff09; 四、输出比较通道&#xff08;高级&#xff09; 五、输出比较模式 六、PWM基本结构 七、PWM参数计算 八、外设介绍 8.1 舵机 8.2 直流电机及驱动 九、开发步骤 十、输出比较库函数…...

《Easy3d+Qt+VTK》学习

《Easy3dQtVTK》学习-1、编译与配置 一、编译二、配置注 一、编译 1、 资源下载&#xff1a;easy3d giuhub 2、解压缩 3、用qt打开CMakeLists.txt即可 4、点击项目&#xff0c;选择debug或者release&#xff0c;图中3处可自行选择&#xff0c;因为我的qt版本是6&#xff0c…...

多平台展示预约的服装小程序效果如何

线下实体服装店非常多&#xff0c;主要以同城生意为主&#xff0c;但随着电商经济增长&#xff0c;传统线下自然流量变少&#xff0c;商家们会选择线上入驻平台开店获得更多线上用户&#xff0c;包括自建私域小程序等。 而除了直接卖货外&#xff0c;线上展示预约在服装行业也…...

Gti GUI添加标签

通过Git Gui打开项目&#xff0c;通过菜单打开分支历史&#xff0c;我这里是名为"develop"的分支 选中需要打标签的commit&#xff0c;右键-Create tag即可 但貌似无法删除标签&#xff0c;只能通过git bash&#xff0c;本地标签通过git tag -d tagname&#xff0c;…...

高云GW1NSR-4C开发板M3硬核应用

1.M3硬核IP下载&#xff1a;Embedded M3 Hard Core in GW1NS-4C - 科技 - 广东高云半导体科技股份有限公司 (gowinsemi.com.cn) 特别说明&#xff1a;IDE必须是1.9.9及以后版本&#xff0c;1.9.8会导致编译失败&#xff08;1.9.8下1.1.3版本IP核可用&#xff09; 以下根据官方…...

ElevenLabs动画配音语音交付危机预警,紧急修复唇动不同步、语速断层、多语言混读错位的6大实时响应方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs动画配音语音交付危机的本质溯源 当动画制作团队依赖 ElevenLabs API 实时生成角色语音时&#xff0c;突然出现的 429 Too Many Requests 响应、TTS 音频静音片段、以及语音情感断层现象&…...

实战指南:如何为nvm-windows项目配置专业级持续集成流水线

实战指南&#xff1a;如何为nvm-windows项目配置专业级持续集成流水线 【免费下载链接】nvm-windows A node.js version management utility for Windows. Ironically written in Go. 项目地址: https://gitcode.com/gh_mirrors/nv/nvm-windows nvm-windows作为Windows平…...

Postman导入导出避坑指南:为什么你的环境变量导入后不生效?

Postman环境变量导入失效深度解析与解决方案 当你在团队协作或项目迁移时&#xff0c;精心配置的Postman环境变量导入后却神秘消失——这种挫败感每个开发者都经历过。本文将揭示Postman变量系统的底层机制&#xff0c;通过三个典型故障场景还原真实问题根源&#xff0c;并提供…...

使用Nodejs和Taotoken快速构建一个支持多模型切换的聊天服务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Node.js和Taotoken快速构建一个支持多模型切换的聊天服务 基础教程类&#xff0c;面向全栈或后端开发者&#xff0c;教程将引导…...

RPG Maker MV/MZ游戏资源解密工具:5分钟解锁游戏素材的完整指南

RPG Maker MV/MZ游戏资源解密工具&#xff1a;5分钟解锁游戏素材的完整指南 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https:…...

MASA全家桶汉化包:三步搞定Minecraft模组界面中文化的终极指南

MASA全家桶汉化包&#xff1a;三步搞定Minecraft模组界面中文化的终极指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Masa Mods复杂的英文界面而烦恼吗&#xff1f;MASA全家…...

基于Python的自动化科研写作工具:Aut_Sci_Write架构与实现

1. 项目概述&#xff1a;一个面向科研写作的自动化工具最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Aut_Sci_Write”。光看名字&#xff0c;大概就能猜到它的核心方向&#xff1a;自动化科学写作。作为一个在科研和工程领域摸爬滚打多年的从业者&#xff0c;我深知一…...

STM32驱动段码屏实战:手把手教你用HT1621B做个简易电子钟(附完整代码)

STM32与HT1621B打造高精度电子钟&#xff1a;从硬件连接到动态显示全解析 在嵌入式开发领域&#xff0c;能够将理论知识转化为实际项目的能力至关重要。本文将带您完成一个完整的电子钟项目&#xff0c;使用STM32微控制器和HT1621B驱动器来驱动段码液晶屏。不同于简单的驱动演示…...

如何在DS918+上免费开启Synology Photos人脸识别功能:完整补丁指南

如何在DS918上免费开启Synology Photos人脸识别功能&#xff1a;完整补丁指南 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 你是否曾经在群晖DS918…...

如何用Fillinger脚本彻底告别Illustrator重复劳动:设计师的智能填充革命

如何用Fillinger脚本彻底告别Illustrator重复劳动&#xff1a;设计师的智能填充革命 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是不是也厌倦了在Illustrator中一遍遍复制粘贴…...