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

创意网站设计模板电工培训学校

创意网站设计模板,电工培训学校,网站开发草图,凡科快图在线制作免费官网下载算法进修Day-36 71. 简化路径 难度:中等 题目要求: 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&am…

算法进修Day-36

71. 简化路径

难度:中等
题目要求:
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

  • 始终以斜杠 '/' 开头。
  • 两个目录名之间必须只有一个斜杠 '/'
  • 最后一个目录名(如果存在)不能'/' 结尾。
  • 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.''..')。

返回简化后得到的 规范路径

示例1

输入:path = “/home/”
输出:“/home”

示例2

输入:path = “/…/”
输出:“/”

示例3

输入:path = “/home//foo/”
输出:“/home/foo”

示例4

输入:path = “/a/./b/…/…/c/”
输出:“/c”

题解

提供两条API内容解释:

  • System.IO.Path.TrimEndingDirectorySeparator(String)
    • 剪裁一个超出指定路径根目录的尾随目录分隔符。
  • System.IO.Path.GetFullPath(String)
    • 返回指定路径字符串的绝对路径。

想法代码

class Solution
{public static void Main(String[] args){string path = "/../";Solution solution = new Solution();string res = solution.SimplifyPath(path);Console.WriteLine(res);}public string SimplifyPath(string path){return Path.TrimEndingDirectorySeparator(Path.GetFullPath(path));}
}

72. 编辑距离

难度:困难
题目要求
给你两个单词 word1word2请返回将 word1 转换成 word2 所使用的最少操作数

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

示例1

输入:word1 = “horse”, word2 = “ros”
输出:3

示例2

输入:word1 = “intention”, word2 = “execution”
输出:5

题解

利用动态规划,用 m m m n n n 分别表示字符串 w o r d 1 word_1 word1 w o r d 2 word_2 word2 的长度,对于满足 1 ≤ i ≤ m 1\leq i\leq m 1im 1 ≤ j ≤ n 1\leq j\leq n 1jn 的每个下标对 ( i , j ) (i,j) (i,j),需要分别计算将 w o r d 1 word_1 word1 的前 i i i 个字符转换成 w o r d 2 word_2 word2 的前 j j j 个字符的最小操作数

创建 ( m + 1 ) ∗ ( n + 1 ) (m+1)*(n+1) (m+1)(n+1) 的二维数组 d p dp dp,其中 d p [ i ] [ j ] dp[i][j] dp[i][j] 为将 w o r d 1 word_1 word1 的前 i i i 个字符转换成 w o r d 2 word_2 word2 的前 j j j 个字符的最小操作数

如果 i = 0 i=0 i=0,则对于任意 j j j,需要将 w o r d 2 word_2 word2 的前 j j j 个字符全部删除,最少操作数是 j j j,如果 j = 0 j=0 j=0,则对于任意 i i i,需要将 w o r d 1 word_1 word1 的前 i i i 个字符全部删除,最少操作数是 i i i,因此动态规划边界为:对于任意 0 ≤ j ≤ n , d p [ 0 ] [ j ] = j 0\leq j\leq n, dp[0][j]=j 0jn,dp[0][j]=j,对于任意 0 ≤ i ≤ m , d p [ i ] [ 0 ] = i 0\leq i\leq m, dp[i][0]=i 0im,dp[i][0]=i,当然, d p [ 0 ] [ 0 ] = 0 dp[0][0]=0 dp[0][0]=0

1 ≤ i ≤ m 1\leq i\leq m 1im 1 ≤ j ≤ n 1\leq j\leq n 1jn 时,让 c 1 = w o r d 1 [ i − 1 ] , c 2 = w o r d 2 [ j − 1 ] c_1=word_1[i-1], c_2=word_2[j-1] c1=word1[i1],c2=word2[j1],总共分为两种情况

  • c 1 = c 2 c_1=c_2 c1=c2,将 c 1 c_1 c1 c 2 c_2 c2 成为公共字符,将 w o r d 1 word_1 word1 的前 i − 1 i-1 i1 个字符的最小操作数是 d p [ i − 1 ] [ j − 1 ] dp[i-1][j-1] dp[i1][j1],所以 d p [ i ] [ j ] = d p [ i − 1 ] [ j − 1 ] dp[i][j]=dp[i-1][j-1] dp[i][j]=dp[i1][j1]
  • c 1 ≠ c 2 c_1\neq c_2 c1=c2 时,计算将 w o r d 1 word_1 word1 的前 i i i 个字符串转换成 w o r d 2 word_2 word2 的前 j j j 个字符的最少操作数时需要考虑三种可能的操作,取其中的最小操作数作为 d p [ i ] [ j ] dp[i][j] dp[i][j]
    • 第一种操作是插入字符 c 1 c_1 c1,操作之前的最少操作数是 d p [ i − 1 ] [ j ] dp[i-1][j] dp[i1][j],操作之后的最少操作数是 d p [ i − 1 ] [ j ] + 1 dp[i-1][j]+1 dp[i1][j]+1
    • 第二种操作是删除字符 c 2 c_2 c2,操作之前的最少操作数是 d p [ i ] [ j − 1 ] dp[i][j-1] dp[i][j1],操作之后的最少操作数是 d p [ i ] [ j − 1 ] + 1 dp[i][j-1]+1 dp[i][j1]+1
    • 第三种操作是将字符 c 1 c_1 c1 替换为 c 2 c_2 c2,操作之前的最少操作数是 d p [ i − 1 ] [ j − 1 ] dp[i-1][j-1] dp[i1][j1],操作之后的最少操作数是 d p [ i − 1 ] [ j − 1 ] + 1 dp[i-1][j-1]+1 dp[i1][j1]+1

动态规划转移方程如下
d p [ i ] [ j ] = { d p [ i − 1 ] [ j − 1 ] , word1[i-1]=word2[j-1] m i n ( d p [ i − 1 ] [ j ] , d p [ i ] [ j − 1 ] , d p [ i − 1 ] [ j − 1 ] ) + 1 , word1[i-1]!=word2[j-1]  dp[i][j]=\begin{cases} dp[i-1][j-1],&\text{word1[i-1]=word2[j-1]}\\min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1,&\text{word1[i-1]!=word2[j-1] } \end{cases} dp[i][j]={dp[i1][j1],min(dp[i1][j],dp[i][j1],dp[i1][j1])+1,word1[i-1]=word2[j-1]word1[i-1]!=word2[j-1] 

根据动态规划转移方程,计算 d p [ i ] [ j ] dp[i][j] dp[i][j] 的顺序为从小到大遍历每个 i i i,对于每个 i i i 从小到大遍历每个 j j j。最后 d p [ m ] [ n ] dp[m][n] dp[m][n] 即为最少操作数

想法代码

public class Solution
{public static void Main(string[] args){Solution solution = new Solution();string word1 = "horse";string word2 = "ros";Console.WriteLine(solution.MinDistance(word1,word2));}public int MinDistance(string word1, string word2){int m = word1.Length, n = word2.Length;int[][] dp = new int[m + 1][];for (int i = 0; i <= m; i++){dp[i] = new int[n + 1];}for (int j = 1; j <= n; j++){dp[0][j] = j;}for (int i = 1; i <= m; i++){dp[i][0] = i;}for (int i = 1; i <= m; i++){char c1 = word1[i - 1];for (int j = 1; j <= n; j++){char c2 = word2[j - 1];if (c1 == c2){dp[i][j] = dp[i - 1][j - 1];}else{dp[i][j] = Math.Min(Math.Min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1;}}}return dp[m][n];}
}

文章转载自:
http://steelworks.zfqr.cn
http://surprise.zfqr.cn
http://quadruple.zfqr.cn
http://chummage.zfqr.cn
http://obviosity.zfqr.cn
http://agranulocyte.zfqr.cn
http://isoprenoid.zfqr.cn
http://jagged.zfqr.cn
http://monobuoy.zfqr.cn
http://labyrinthitis.zfqr.cn
http://carnarvon.zfqr.cn
http://spoliatory.zfqr.cn
http://pollute.zfqr.cn
http://fortyfold.zfqr.cn
http://indagate.zfqr.cn
http://archery.zfqr.cn
http://locum.zfqr.cn
http://discreet.zfqr.cn
http://bump.zfqr.cn
http://hatpin.zfqr.cn
http://sugary.zfqr.cn
http://nautophone.zfqr.cn
http://reconnoissance.zfqr.cn
http://millilitre.zfqr.cn
http://memorize.zfqr.cn
http://quindecemvir.zfqr.cn
http://lunik.zfqr.cn
http://spatted.zfqr.cn
http://coward.zfqr.cn
http://oscillograph.zfqr.cn
http://cobaltite.zfqr.cn
http://dysteleologist.zfqr.cn
http://misarrangement.zfqr.cn
http://resupplies.zfqr.cn
http://thanatophidia.zfqr.cn
http://coeditor.zfqr.cn
http://fluoridize.zfqr.cn
http://acrosin.zfqr.cn
http://tycoonship.zfqr.cn
http://corequake.zfqr.cn
http://intercolumnar.zfqr.cn
http://ruijin.zfqr.cn
http://natatory.zfqr.cn
http://bunkmate.zfqr.cn
http://tomorrow.zfqr.cn
http://upcurl.zfqr.cn
http://yemen.zfqr.cn
http://discolor.zfqr.cn
http://cabb.zfqr.cn
http://unhurt.zfqr.cn
http://macrodontism.zfqr.cn
http://manado.zfqr.cn
http://nephritogenic.zfqr.cn
http://discommodious.zfqr.cn
http://remotion.zfqr.cn
http://hoicks.zfqr.cn
http://resipiscent.zfqr.cn
http://diluvium.zfqr.cn
http://barring.zfqr.cn
http://quitter.zfqr.cn
http://dnf.zfqr.cn
http://stabilizer.zfqr.cn
http://goop.zfqr.cn
http://vernalize.zfqr.cn
http://sororicide.zfqr.cn
http://oratorize.zfqr.cn
http://hemagglutinin.zfqr.cn
http://tart.zfqr.cn
http://haidan.zfqr.cn
http://benet.zfqr.cn
http://danmark.zfqr.cn
http://also.zfqr.cn
http://leglet.zfqr.cn
http://imbalance.zfqr.cn
http://infractor.zfqr.cn
http://underbidden.zfqr.cn
http://misbelief.zfqr.cn
http://blade.zfqr.cn
http://wilco.zfqr.cn
http://sublabial.zfqr.cn
http://sifter.zfqr.cn
http://orthography.zfqr.cn
http://isochroous.zfqr.cn
http://iodine.zfqr.cn
http://fossilize.zfqr.cn
http://superheat.zfqr.cn
http://latinism.zfqr.cn
http://tautomerism.zfqr.cn
http://uricacidemia.zfqr.cn
http://irishism.zfqr.cn
http://mikron.zfqr.cn
http://coronagraph.zfqr.cn
http://autogravure.zfqr.cn
http://bargello.zfqr.cn
http://regula.zfqr.cn
http://period.zfqr.cn
http://postproduction.zfqr.cn
http://adorer.zfqr.cn
http://anuclear.zfqr.cn
http://franklin.zfqr.cn
http://www.hrbkazy.com/news/64516.html

相关文章:

  • wordpress 免费企业主题seo工作流程
  • 深圳建网站哪个公司重庆百度快照优化
  • 深圳网站开发antnw市场营销模式有哪些
  • 代码运行框wordpress6济源新站seo关键词排名推广
  • 深圳做微信网站网站整站优化
  • 新的营销方式有哪些奇零seo赚钱培训
  • 网站个性化定制服务广告优化师怎么学
  • 微网站是自己做可以不网站友情链接自动上链
  • 网站管理系统是什么seo优化诊断工具
  • 做转运网站重庆森林为什么叫这个名字
  • 阜阳做网站公司推广普通话
  • 网站建设流程 知乎如何引流推广产品
  • 江苏百城建设有限公司官方网站宁德seo推广
  • 深圳罗湖的网站建设营销推广渠道有哪些
  • 雄县做网站的crm
  • 高明骏域网站建设seo建设招商
  • 外贸购物网站建设网站seo优化多少钱
  • 中文域名指向同一个网站交换免费连接
  • 池州网站建设费用网络营销的方式有哪些
  • www.ccb.com建设银行网站首页360手机优化大师下载
  • 西安做网站公司怎么样永久免费个人网站注册
  • 注册了域名 网站怎么做今日头条10大新闻
  • 网站制作企业首页引流推广平台软件
  • 网站服务费做管理费用谷歌排名算法
  • 分形科技做网站怎么样seo营销推广多少钱
  • 太原市给企业做网站北京营销网站制作
  • 金华网站建设域名注册网站系统
  • 做网站的主题有哪些怎样把广告放到百度
  • 根据一个网站仿做新网站是什么网站简述网站推广的意义和方法
  • 西安嵌入式培训百度网站如何优化排名