BasedLeetCode

LeetCode learning records based on Java,Kotlin,Python...Github 地址

序号对应 LeetCode 中题目序号

14 编写一个函数来查找字符串数组中最长的公共前缀字符串

  • Java 语言实现
    public static String longestCommonPrefix(String[] strs) {
if (strs.length == 0) {
return "";
}
if (strs.length == 1) {
return strs[0] == null ? "" : strs[0];
}
//找出数组中字符长度最短的字符串的长度(决定最多进行轮循比较的次数或者说是位数)
int minLength = Integer.MAX_VALUE;
for (String s : strs) {
if (minLength > s.length()) {
minLength = s.length();
}
}
boolean isCharEquals = true;
int i;//记录最后一位相等字符的位置
for (i = 0; i < minLength; i++) {
for (int j = 0; j < strs.length; j++) {
if (strs[0].charAt(i) != strs[j].charAt(i)) {
isCharEquals = false;
break;
}
}
if (!isCharEquals) {
break;
}
}
return strs[0].substring(0, i);
}
  • Kotlin 语言实现

20 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效

利用栈存放左括号,出现右括号时判断栈顶的左括号是否跟当前右括号相匹配,匹配则移除栈中元素;最后检测栈中元素是否全部被移除;

  • Java 语言实现
    public boolean isValid(String s) {
Stack<Character> characterStack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
characterStack.push('(');
}
if (s.charAt(i) == '[') {
characterStack.push('[');
}
if (s.charAt(i) == '{') {
characterStack.push('{');
}
if (s.charAt(i) == ')') {
if (!characterStack.isEmpty() && characterStack.pop() == '(') {
continue;
} else {
return false;
}
}
if (s.charAt(i) == ']') {
if (!characterStack.isEmpty() && characterStack.pop() == '[') {
continue;
} else {
return false;
}
}
if (s.charAt(i) == '}') {
if (!characterStack.isEmpty() && characterStack.pop() == '{') {
continue;
} else {
return false;
}
}
}
return characterStack.isEmpty();
}
  • Kotlin 语言实现
    fun isValid(s: String): Boolean {
val charStack = ArrayList<Char>()
for (i in s.indices) {
if (s[i] == '(') {
charStack.add('(')
}
if (s[i] == '[') {
charStack.add('[')
}
if (s[i] == '{') {
charStack.add('{')
}
if (s[i] == ')') {
if (!charStack.isEmpty() && charStack[charStack.lastIndex] == '(') {
charStack.removeAt(charStack.lastIndex)
continue
} else {
return false
}
}
if (s[i] == ']') {
if (!charStack.isEmpty() && charStack[charStack.lastIndex] == '[') {
charStack.removeAt(charStack.lastIndex)
continue
} else {
return false
}
}
if (s[i] == '}') {
if (!charStack.isEmpty() && charStack[charStack.lastIndex] == '{') {
charStack.removeAt(charStack.lastIndex)
continue
} else {
return false
}
}
}
return charStack.isEmpty()
}

26 删除排序数组中的重复项

题目详细描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

思路:从角标2开始向后遍历,如果当前元素和前一个元素不相同,就把角标为index的值赋值为当前元素,index自增

  • Java 语言实现
    public int removeDuplicates(int[] nums) {
if (nums.length == 0) {
return 0;
}
if (nums.length == 1) {
return 1;
}
int index = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[i - 1]) {
nums[index++] = nums[i];
}
}
return index;
}
  • Kotlin 语言实现
    fun removeDuplicates(nums: IntArray): Int {
if (nums.isEmpty()) return 0
if (nums.size == 1) return 1
var index = 1
for (i in 1 until nums.size) {
if (nums[i] != nums[i - 1]) {
nums[index++] = nums[i]
}
}
return index
}

使用Java+Kotlin双语言的LeetCode刷题之路(三)的更多相关文章

  1. 使用Java+Kotlin双语言的LeetCode刷题之路(二)

    BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 ...

  2. 使用Java+Kotlin双语言的LeetCode刷题之路(一)

    LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 1 两数之和 给定一个整数数 ...

  3. #leetcode刷题之路28-实现 strStr() 函数

    实现 strStr() 函数.给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返回 ...

  4. python -- leetcode 刷题之路

    第一题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], tar ...

  5. #leetcode刷题之路3-无重复字符的最长子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc" ...

  6. leetcode 刷题之路 64 Construct Binary Tree from Inorder and Postorder Traversal

    Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume tha ...

  7. #leetcode刷题之路50-Pow(x, n)

    实现 pow(x, n) ,即计算 x 的 n 次幂函数.示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100 #inclu ...

  8. #leetcode刷题之路49-字母异位词分组

    给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串.示例:输入: ["eat", "tea", "tan" ...

  9. #leetcode刷题之路48-旋转图像

    给定一个 n × n 的二维矩阵表示一个图像.将图像顺时针旋转 90 度.说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像.示例 1:给定 matrix ...

随机推荐

  1. 定义 java 基本数据类型

    package debug; class Demo { /* * 定义八种基本数据类型,如下 */ public static void main(String[] args) { //define ...

  2. 线程间的通信_多生产者多消费者问题_JDK1.5新特性_Lock

    对于同步代码块,对于锁的操作是隐式的但是在JDK1.5之前的这种方法效率有点低,判断会很多,后面升级之后有新的解决方案 jdk1.5以后将同步和锁封装成了对象,并将操作锁的隐式方式定义到了该对象中,将 ...

  3. Http实现文件下载

    HttpServlet实现下载文件,重要的设置header,否则浏览器无法解析为下载. Header示例: 1:response.setContentType("application/pd ...

  4. linux(centos 7)下安装elasticsearch 5 的 IK 分词器

    (一)到IK 下载 对应的版本(直接下载release版本,避免mvn打包),下载后是一个zip压缩包 (二)将压缩包上传至elasticsearch 的安装目录下的plugins下,进行解压,运行如 ...

  5. QT插件+ROS 2 新建项目

    一QT插件开发ROS,http://www.ncnynl.com/archives/201701/1277.html 二QT开发遇到问题http://blog.csdn.net/u013453604/ ...

  6. MVC思想及SpringMVC设计理念

    1:什么是MVC        MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑 ...

  7. Shell获取指定时间

    时区基本知识 相差一个时区(经度15度)时间相差一小时.简单计算口诀:1.同一个时区的相差时间用减法,2.不同时区的相差时间用加法.3东加西减.例如一,东八区是8点,问东1区几点.根据上面口诀1,算: ...

  8. python3.6小程序

    # 查询类python 3.6 pycharm中运行(唔错) people = { '王飞': { '电话': '2341', '地址': '西方镇忘川村' }, '小瘪三': { '电话': '91 ...

  9. 【Topcoder 10107】TeamManagement

    Topcoder 10107 题意:给定一棵树,其中有些点是忠诚的,现在要选k个点,每个选择的联通块都必须包含一个忠诚的点,求包含某个点的概率. 思路:考虑树型\(dp\),\(dp(i,j,0/1, ...

  10. 使用HttpClient和Jsoup实现一个简单爬虫

    一直很想了解一下爬虫这个东西的,完全是出于兴趣,其实刚开始是准备用python的,但是由于种种原因选择了java,此处省略很多字... 总之,如果你想做一件事情的话就尽快去做吧,千万不要把战线拉得太长 ...