2.无重复字符的最长子串(字节跳动)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Xidian2850/article/details/89633462

 

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 
"abc",所以其
长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 
"b"
,所以其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 
"wke"
,所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,
"pwke"
 是一个子序列,不是子串。

			//最后一个测试用例
String s = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTVWXZY0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_'{|}~ abcdefghjklmno...";
package explore.ziJieTiaoDong;

import java.util.HashSet;
import java.util.Set;

import javax.sound.midi.Transmitter;

public class lengthOfLongestSubstringC {
	
	  public static int lengthOfLongestSubstring(String s) {
		  /*
		   * 解决思路: 头尾相逼法
		   */
		  int count = 0;
	        char[] list = s.toCharArray();
	        int L = 0;//最长子串的长度
	        int temp = 0;//当前子串的长度
	        if(list != null && list.length>0) {
	        	L = 1;
	        	for(int i=0; i<list.length; i++) {
	        		for(int j=list.length-1; j>i; j--) {
	        			if(list[i] != list[j]) {
        					boolean isRepect = false;
	        				for(int k=i+1; k<j; k++) {
	        					//遍历除头尾两个元素外的中间所有元素
	        					if(list[i]==list[k] || list[j]==list[k]) {
	        						isRepect = true;//中间有重复元素
	        						break;//立即中断继续比较
	        					}
	        				}
	        				if(isRepect==false) {  
	        					//中间的元素之间是否有相同的元素
	        					boolean isSame = false;
	        					for(int k=i+1; k<j; k++) {
	        						 for(int f=j-1; f>k; f--) { //f必须大于k
	        							 if(list[k] == list[f]) {
	        								 isSame = true;
	        								 break;
	        							 }
	        						 }
	        					}
	        					if(isSame == false) {
	        						temp = j - i + 1;
	        						if(temp > L) {
	        							L = temp;
	        						}
	        						break;
	        					}
        					}
	        			}
	        		}
	        	}
	        }
	        return L;
	  }
	  
	  public static void main(String[] args) {
//			String s = "pwwkewa";
//			String s = "pwwkew";
//			String s = "sdfghkl";
//			String s = "pwwkeww";
//			String s = "abcdeff";
//			String s = "abcabcbb";
//			String s = "bbbbb";
			String s = "pwwkew";
//			String s = "aabcde";
			System.out.println("L------: " + lengthOfLongestSubstring(s));
	}

}

执行结果:

本次提交失败!执行时间超时!

猜你喜欢

转载自blog.csdn.net/Xidian2850/article/details/89633462