使用Java+Kotlin双语言的LeetCode刷题之路(三)
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刷题之路(三)的更多相关文章
- 使用Java+Kotlin双语言的LeetCode刷题之路(二)
		BasedLeetCode LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 ... 
- 使用Java+Kotlin双语言的LeetCode刷题之路(一)
		LeetCode learning records based on Java,Kotlin,Python...Github 地址 序号对应 LeetCode 中题目序号 1 两数之和 给定一个整数数 ... 
- #leetcode刷题之路28-实现 strStr() 函数
		实现 strStr() 函数.给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返回 ... 
- python -- leetcode 刷题之路
		第一题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], tar ... 
- #leetcode刷题之路3-无重复字符的最长子串
		给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc" ... 
- 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 ... 
- #leetcode刷题之路50-Pow(x, n)
		实现 pow(x, n) ,即计算 x 的 n 次幂函数.示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100 #inclu ... 
- #leetcode刷题之路49-字母异位词分组
		给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串.示例:输入: ["eat", "tea", "tan" ... 
- #leetcode刷题之路48-旋转图像
		给定一个 n × n 的二维矩阵表示一个图像.将图像顺时针旋转 90 度.说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像.示例 1:给定 matrix ... 
随机推荐
- Linux下Sublime Text 3的安装
			1.下载 官网下载 或者直接 #wget http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_3059_x32.tar.bz2 (linux ... 
- jQuery 往table添加新内容有以下四个方法:
			Query 添加新内容有以下四个方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() ... 
- python流程控制语句-if语句
			一个if语句 if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ),也就是只有一个if判断,当为真的时候就运行一块语句,否则就不运行 下面代码中的if语句控制者缩进的pri ... 
- myeclipse中配置spring xml自己主动提示
			版权声明: https://blog.csdn.net/zdp072/article/details/24582173 这是一篇分享技巧的文章:myeclipse中配置spring xml自己主动提示 ... 
- map && multimap
			map map 的意思是映射.用法一般是 map<char, int>mp 按照我的理解,map 类似于一个高级的数组.前面的数据类型 char 相当于下脚标,而数组元素的值就对应 ... 
- 关于ThinkPHP执行长时间任务可能导致PHP使用内存越来越大的问题
			ThinkPHP执行长时间任务时,可能导致PHP使用内存越来越大,最后因为内存超出配置限额而程序挂掉. 其实这在很久以前就无意之中发现的一个问题. 3.x之前有这个问题,5.0以后的,应该是已修复了的 ... 
- mybatis 枚举的支持
			文章转自 https://www.cnblogs.com/jeffen/p/6380724.html 在spring-boot中可以通过yml全局配置枚举执行器 
- IDEA里面添加lombok插件,编写简略风格Java代码(转)
			文章转自http://blog.csdn.net/hinstenyhisoka/article/details/50468271 在 java平台上,lombok 提供了简单的注解的形式来帮助我们消除 ... 
- https://leetcode.com/problems/palindromic-substrings/description/
			https://www.cnblogs.com/grandyang/p/7404777.html 博客中写的<=2,实际上<=1也是可以的 相当于判断一个大指针内所有子字符串是否可能为回文 ... 
- ASP.NET MVC学习笔记(一) 从路由开始创建mvc
			之前一篇写一半发现版本太老了,是基于mvc2的. 两本参考书编写的顺序各方面都不太一样.决定重新写一篇. 我这篇文章基于mvc5,vs2015 参考书:Will保哥的ASP.NET MVC4开发指南 ... 
