Longest Substring without Duplication

来源:互联网 发布:vs打开数据库 编辑:程序博客网 时间:2024/05/19 11:20

Problem: Given a string, please get the length of the longest substring which does not have duplicated characters. Supposing all characters in the string are in the range from ‘a’ to ‘z’.

妙处在于如何正确定义子问题。

参考:http://codercareer.blogspot.com/2013/11/no-49-longest-substring-without.html

/* Copyleft: Ming Lin <minggr@gmail.com> */#include <stdio.h>char *position(char *str, int len, char c){while (len > 0) {if (c == *str)return str;len--;str--;}return NULL;}int longest_substring(char *str){int len, maxlen;char *tmp;len = maxlen = 0;while (*str) {if (len == 0) {maxlen = len = 1;str++;continue;}tmp = position(str-1, len, *str);if (!tmp)len++;elselen = str - tmp;if (len > maxlen)maxlen = len;str++;}return maxlen;}int main(){char str[] = "abazckbLMNLb";printf("%s\n", str);printf("longest_substring: %d\n", longest_substring(str));return 0;}


0 0
原创粉丝点击