3月6号 学而思
2016-03-07 17:00
204 查看
1.两个字符串的最大公共子串
int dp(char str1[], char str2[]) { int min = 0; int dp[][] = new int[str1.length][str2.length]; for (int i = 0; i < str1.length; i++) { if (str1[i] == str2[0]) dp[i][0] = 1; else dp[i][0] = 0; } for (int i = 0; i < str2.length; i++) { if (str1[0] == str2[i]) dp[0][i] = 1; else dp[0][i] = 0; } for (int i = 1; i < str1.length; i++) { for (int j = 1; j < str2.length; j++) { if (str1[i] == str2[j]) dp[i][j] = dp[i - 1][j - 1] + 1; else dp[i][j] = 0; } } for (int i = 0; i < str1.length; i++) { for (int j = 0; j < str2.length; j++) { if (dp[i][j] > min) min = dp[i][j]; } } return min; }
2.strsplit函数的实现
3.小根堆的实现
4.不用额外空间,交换两个数据
方法一:int a = 10; int b = 5; a = a + b; b = a - b; a = a - b;
方法二:
int a = x, b = y; //两个相同的数异或结果为0,任何数与0异或的结果是任何数 a = a ^ b; //a = x ^ y; b = b ^ a; //b = y ^ x ^ y = x; a = a ^ b; //a = x ^ y ^ x = y;
其中方法二只适用于整型数据,并且它的效率高于方法一
相关文章推荐
- C#实现无限级联下拉列表框
- 最长递增子序列问题
- memcpy和memmove的区别(实验代码原创)
- 创建Git仓库_git_sourceTree
- VC窗口控件覆盖WS_CLIPCHILDREN和WS_CLIPSIBLINGS
- 正整数个个位数数字之和
- HBase源码分析之compact请求发起时机、判断条件等详情(一)
- React event
- 细说mybatis的缓存机制
- 在Unity中使用Shader
- javascript-几个基础的排序算法
- JavaScript语言精粹知识点总结
- bzoj 2154 Crash的数字表格(莫比乌斯反演及优化)
- SQL Server 触发器
- JavaScript之Window对象
- carouFredSel参数
- 字符串反序
- 乐观锁和悲观锁
- Exynos4412 内核移植(一)—— 内核配置过程分析
- leetcode笔记:Maximum Product of Word Lengths