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

LeetCode-Java(03)

9. 回文数

class Solution {public boolean isPalindrome(int x) {if (x < 0 || (x % 10 == 0 && x != 0)) {return false;}int revertedNumber = 0;while (x > revertedNumber) {revertedNumber = revertedNumber * 10 + x % 10;x /= 10;}// 当长度为奇数时通过revertedNumber/10 去除处于中位的数字。return x == revertedNumber || x == revertedNumber / 10;}
}

11. 盛最多水的容器

双指针

class Solution {public int maxArea(int[] height) {int ans=0;// 首位指针int i=0,j=height.length-1;while(i<j){ans=Math.max(ans,(j-i)*Math.min(height[i],height[j]));if(height[i]>=height[j]) j--;else i++;}return ans;}
}

写到一起 时间快不少

class Solution {public int maxArea(int[] height) {int ans=0;int i=0,j=height.length-1;while(i<j){if(height[i]>=height[j]) ans=Math.max(ans,(j-i)*height[j--]);else ans=Math.max(ans,(j-i)*height[i++]);}return ans;}
}

12. Integer to Roman

class Solution {public String intToRoman(int num) {// 4、9、40、90、400、900 作为加法因子,它们在结果中只能出现一次。int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};String[] romans = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};StringBuilder stringBuilder = new StringBuilder();int index = 0;while (index < 13) {// 贪心策略while (num >= nums[index]) {stringBuilder.append(romans[index]);num -= nums[index];}index++;}return stringBuilder.toString();}
}

13. Roman to Integer

和前一道相反,直接累加字符的值

class Solution {public int romanToInt(String s) {// 4、9、40、90、400、900 作为加法因子,它们在结果中只能出现一次。// int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};// String[] romans = {"M", "f", "D", "e", "C", "d", "L", "c", "X", "b", "V", "a", "I"};s = s.replace("IV","a");s = s.replace("IX","b");s = s.replace("XL","c");s = s.replace("XC","d");s = s.replace("CD","e");s = s.replace("CM","f");int res = 0;for (int i=0; i<s.length(); i++) {res += which(s.charAt(i));}return res;}private int which(char ch) {switch(ch) {case 'I': return 1;case 'V': return 5;case 'X': return 10;case 'L': return 50;case 'C': return 100;case 'D': return 500;case 'M': return 1000;case 'a': return 4;case 'b': return 9;case 'c': return 40;case 'd': return 90;case 'e': return 400;case 'f': return 900;}return 0;}
}

优化一下

class Solution {public int romanToInt(String s) {int[] nums = new int[s.length()];int res = 0;for(int i = 0;i <s.length();i ++){nums[i] = trans(s.charAt(i));}for(int i = 0;i < s.length();i ++){// 前面的数字小于后面的数字,加上他们的差值 注意i最多取到倒数第二位 跳出执行下一个if(i != s.length() - 1 && nums[i] < nums[i + 1]){res += nums[i + 1] - nums[i];i ++;continue;}// 一直累加res += nums[i];}return res;}private int trans(char cur){switch(cur){case 'I': return 1;case 'V': return 5;case 'X': return 10;case 'L': return 50;case 'C': return 100;case 'D': return 500;case 'M': return 1000;}return 0;}
}

14. Longest Common Prefix

 每两个字符串进行比较

class Solution {public String longestCommonPrefix(String[] strs) {if (strs == null || strs.length == 0) {return "";}String prefix = strs[0];int count = strs.length;for (int i = 1; i < count; i++) {// 找两个字符串的公共最长前缀,两两比较,每次比较前面得出的最长前缀prefix = longestCommonPrefix(prefix, strs[i]);if (prefix.length() == 0) {break;}}return prefix;}public String longestCommonPrefix(String str1, String str2) {int length = Math.min(str1.length(), str2.length());int index = 0;while (index < length && str1.charAt(index) == str2.charAt(index)) {index++;}// substring 的参数索引 左闭右开return str1.substring(0, index);}
}
http://www.lryc.cn/news/112592.html

相关文章:

  • 【Linux命令行与Shell脚本编程】第十六章 Shell函数
  • SpringCloud-Hystrix服务熔断与降级工作原理源码 | 京东物流技术团队
  • (一)react脚手架
  • Typescript中的元组与数组的区别
  • SpringBoot的index首页的访问、自定义Favicon图标
  • 【C++】C++文件操作-文本文件/二进制文件
  • java通过http网络url下载文件
  • 网络安全【黑客】自学
  • PCA和自动编码器:每个人都能理解的算法
  • C++——STL容器【priority_queue】模拟实现
  • SpringBoot实现文件记录日志,日志文件自动归档和压缩
  • MySQL 窗口函数
  • 0140 数据链路层2
  • Python字典的应用场景
  • 关于外贸跟进客户过程中需要注意的地方
  • AI绘画:两组赛博咒语和ComfyUI使用方法
  • Nacos源码 (2) 核心模块
  • MySQL之深入InnoDB存储引擎——Buffer Pool
  • 网络安全(秋招)如何拿到offer?(含面试题)
  • 笙默考试管理系统-MyExamTest----classranking(2)
  • 基于python的一个元素多种定位方式
  • Fastdfs集群搭建
  • 【深度学习】Vision Transformer论文,ViT的一些见解《 一幅图像抵得上16x16个词:用于大规模图像识别的Transformer模型》
  • 在centos7上使用非编译方式安装ffmpeg
  • 【微信小程序】导出Excel文件
  • 接口测试—知识速查(Postman)
  • 机器学习深度学习——序列模型(NLP启动!)
  • 小白到运维工程师自学之路 第六十四集 (dockerfile构建tomcat、mysql、lnmp、redis镜像)
  • 超低功耗水表电器表LCD驱动显示芯片,高抗干扰性能提供LQFP48、LQFP64的封装
  • SpringBoot3---核心特性---2、Web开发III(模板引擎、国际化、错误处理)