问题:给定一个字符串,查找其最长无重复字符的子串,并输出其长度
示例:
输入:"abcabcbb"
输出:3
输入:"bbbbbb"
输出:1
C解决方案:
#include <string.h> //判断最后一个字符在前面的字符串中是否已经存在 int judgeRepeat(char * s,int left, int right){ while(left<right){ if(s[left]==s[right]){ return left; } left++; } return -1; } int lengthOfLongestSubstring(char * s){ //判断字符串长度是否小于1,小于1直接返回字符串长度 int length = strlen(s); if(length<=1){ return length; } int left = 0; int right = 0; int maxLength = right-left+1; //循环,每次增加一个字符,判断该字符在之前的字符串中是否已经存在, //存在,则将left变为存在的字符串索引+1,不存在,则判断输出的长度是否应该改变 while(right<length){ int judge = judgeRepeat(s,left,right); if(judge==-1){ if(maxLength<right-left+1) maxLength = right-left+1; }else{ left = judge+1; } right+=1; } return maxLength; }