zoukankan      html  css  js  c++  java
  • leetcode刷题笔记十四 最长公共前缀 Scala版本

    leetcode刷题笔记十四 最长公共前缀 Scala版本

    源地址:最长公共前缀

    问题描述:

    Write a function to find the longest common prefix string amongst an array of strings.

    If there is no common prefix, return an empty string "".

    Example 1:

    Input: ["flower","flow","flight"]
    Output: "fl"
    

    Example 2:

    Input: ["dog","racecar","car"]
    Output: ""
    Explanation: There is no common prefix among the input strings.
    

    Note:

    All given inputs are in lowercase letters a-z.

    简要思路分析:

    比较简单的方法是水平扫描法。选择长度较短的字符串作为标准,与剩余字符串前缀进行比较,通过移动字符判断合适的前缀但是这种复杂度较高。或者从较短的字符串的位置比较,判断其他串的位置是否一致,如果是,则加入公共前缀。比较巧妙的方法是通过对str进行比较,str比较的原则是字符串的顺序,通过min和max筛选出差距最明显的两个字符串,寻找他们的公共字符串即可。下面是大佬的一行解决办法。

    代码补充:

    object Solution {
        def longestCommonPrefix(strs: Array[String]): String = {
          return strs.foldLeft("")((_,_)=>(strs.min,strs.max).zipped.takeWhile(v => v._1 == v._2).unzip._1.mkString)  
        }
    }
    

    知识补充:

    1.foldLeft

    参考https://blog.csdn.net/qq_29677083/article/details/84436462

    2.takeWhile 与 where 对比

    Where会选取所有满足条件的集合;

    TakeWhile会选取满足条件的集合,遇到不满足条件的会中止搜索

    3.zipped 与 unzip

    val test=("aaaaaaaaa","aaaaaabbbbb").zipped.takeWhile(v => v._1 == v._2)
    println(test)
    console:
    List((a,a), (a,a), (a,a), (a,a), (a,a), (a,a))
    
    val test1 = test.unzip
    println(test1)
    console:
    (List(a, a, a, a, a, a),List(a, a, a, a, a, a))
    
  • 相关阅读:
    JavaScript:原生模拟$.ajax以及jsonp
    Nodejs之路:非I/O的异步API
    Nodejs之路:异步I/O的过程
    同步、异步、阻塞、非阻塞
    spring mvc在普通类中获取HttpServletRequest对象
    Nginx反向代理实现Tomcat多个应用80端口访问
    IIS 7.5配置PHP站点
    程序员与禅师
    MVC一些需要注意的问题
    强制卸载VS2013
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/12709763.html
Copyright © 2011-2022 走看看