• 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))
    
  • 相关阅读:
    WordPress 常用的动作钩子
    wordpress的过滤器
    实战haslayout(实战篇)!
    wordpress函数描述之一——WordPress add_theme_support() 函数
    一些闲言碎语,好记星不如烂笔头(一)
    实战haslayout(理论篇)!
    WordPress的钩子函数之一——do_action()
    IE6变态bug总结非常好!没有错误
    Javascript参考博客
    SilverLight遍历父子控件的通用方法
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/12709763.html
Copyright © 2020-2023  润新知