DP思路解算法题
来源:互联网 发布:dota2战绩查询软件 编辑:程序博客网 时间:2024/06/01 14:43
今天首次接触到DP算法,DP是dynamic programming的缩写,中文为动态规划编程,是一种编程思想。
LeetCode上这么一道题:
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be a substring, "pwke"
is a subsequence and not a substring.
希望大家先自己思考下,动手写下自己的解法,然后再看下面的解法,觉得有一种惊奇的感觉,然后你会发现算法真的可以开阔思维。
下面贴出DP解法:
C版本:
#include<stdio.h>#include<string.h>int LenOfSubstr(const char* s){ int pos[256]; memset(pos, -1, sizeof(int)*256); int maxlen = 0; int start = -1; for (int i = 0; i < strlen(s); i++){ if (pos[s[i]] > start){ start = pos[s[i]]; } maxlen = maxlen > (i-start) ? maxlen : (i-start); pos[s[i]] = i; } return maxlen;}int main(){ char* s = "abcabcbb"; printf("maxlen of \"%s\" is %d\n", s, LenOfSubstr(s));}
python版本:
# -*-coding:utf-8-*-def lenOfSubstr(s): dc = {} start = -1 maxlen = 0 for i in range(len(s)): if s[i] in dc: if dc[s[i]] > start: start = dc[s[i]] maxlen = max(maxlen,i-start) dc[s[i]] = i return maxlens = 'pwwkew'print(lenOfSubstr(s))
1 0
- DP思路解算法题
- 3791: 作业 思路题 DP
- 4321: queue2 思路题 DP
- [BZOJ2064]-分裂-状压dp思路好题
- 算法思路
- 算法思路
- UVA 12260 (思路dp)
- 面试时算法题的解答思路
- 做算法题的几个思路
- 做算法题的几个思路
- 一道关于拆分思路的算法题
- 做算法题的几个思路
- 算法题---求大神的思路
- 时间片轮转算法做题思路
- 面试时算法题的解答思路
- 面试时算法题的解答思路
- 一道算法题,看看大家的思路
- 面试时算法题的解答思路
- 数字三角形问题
- 关于c++中的拷贝构造函数(复制构造函数)
- IRC 服务以及freenode
- TCP和1448
- 同步异步与阻塞与非阻塞
- DP思路解算法题
- Q88:全局光照(Global Illumination)——Path Tracing算法生成反射焦散效果的图形
- 静态变量-动态变量
- Junit单元测试
- 【方法】机器学习中的数据清洗与特征处理
- React学习之State与生命周期基友情(四)
- Java之按行、列读excel笔记
- Sqoop学习笔记 --- python保存 Sqoop 打印的信息
- ruby on rails 撤销取消操作