2016 校 招
来源:互联网 发布:java学多久可以上岗 编辑:程序博客网 时间:2024/05/17 07:32
最小编辑代价 leetcode 72
对于两个字符串A和B,我们需要进行插入、删除和修改操作将A串变为B串,定义c0,c1,c2分别为三种操作的代价,请设计一个高效算法,求出将A串变为B串所需要的最少代价。
给定两个字符串A和B,及它们的长度和三种操作代价,请返回将A串变为B串所需要的最小代价。保证两串长度均小于等于300,且三种代价值均小于等于100。
测试样例:
"abc",3,"adc",3,5,3,100
MinCost {public: int findMinCost(string A, int n, string B, int m, int c0, int c1, int c2) { // write code here if(A.size()==0||B.size()==0) return 0; vector<vector<int>> dp(n+1,vector<int>(m+1,0)); for(int i=0;i<n+1;i++) { dp[i][0]=i*c1; } for(int j=0;j<m+1;j++) { dp[0][j]=j*c0; } for(int i=1;i<n+1;i++) for(int j=1;j<m+1;j++) { if(A[i-1]==B[j-1])//注意这里的ij与元字符串的区别 dp[i][j]=dp[i-1][j-1]; else dp[i][j]=dp[i-1][j-1]+c2;//替换操作 dp[i][j]=min(dp[i][j],dp[i-1][j]+c1);//删除操作 dp[i][j]=min(dp[i][j],dp[i][j-1]+c0);//插入 } return dp[n][m]; }};
字符串交错组成
对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。请编写一个高效算法,判断C串是否由A和B交错组成。
给定三个字符串A,B和C,及他们的长度。请返回一个bool值,代表C是否由A和B交错组成。保证三个串的长度均小于等于100。
测试样例:不能通过全部案例
"ABC",3,"12C",3,"A12BCC",6
返回:true
class Solution {public: bool isInterleave(string A, string B, string C) { int n=A.size(),m=B.size(),v=C.size(); if(n+m!=v) return false; bool res[n+1][m+1]; res[0][0]=true; for(int i=1;i<n+1;i++) { if(C[i-1]!=A[i-1]) break; res[i][0]=true; } for(int i=1;i<m+1;i++){ if(C[i-1]!=B[i-1]) break; res[0][i]=true; } for(int i=1;i<n+1;i++) for(int j=1;j<m+1;j++) { res[i][j]=(res[i-1][j]&&A[i-1]==C[i+j-1])||(res[i][j-1]&&B[j-1]==C[i+j-1]); } return res[n][m]; } };
阅读全文
0 0
- 决战2016校招
- 2016校招心得
- 2016 校 招
- 阿里2016校招java
- 2016兰亭校招C++
- 2016校招求职经验
- 腾讯2016校招笔试
- 校招
- 校招
- 校招
- 2016 360校招笔试编程题
- 2016网易校招一面总结
- 2016阿里校招算法工程师笔试
- 2016 阿里校招笔试应用题总结
- 新能源集团2016校招测评
- 腾讯2016校招笔试题
- 2016腾讯校招笔试 (部分题目)
- 2016腾讯校招研发笔试(三)
- HDU 1003: Max Sum
- android handler
- Visual Studio Code如何编写运行C、C++?
- 数据挖掘
- 51Nod 1241
- 2016 校 招
- EmguCV Mat元素访问的方法
- 数据结构 | 中缀表达式-->前后缀表达式
- 二级Web程序设计考试大纲(2013年版)
- DOM节点层次(Node类型)
- 【DP】回文的最小分割数2
- java编程:输入int数组的方法一(不知道长度)
- SpringBoot 配置分析(二)
- FreeRTOS任务基础