数组算法 3

/* 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.
 * <<===================================================================================>>
 * @param {string} s
 * @return {number}
 */
function lengthOfLongestSubstring(string) {
  var s = string.toString();
  var stringArray = [];
  var result = 0;
  // 将字符串转换为数组
  for( var k = 0; k < s.length; k ++ ){
    stringArray.push(s[k]);
  } 
  var len = stringArray.length;
  //  判断是否为无重数组
  var ok = stringArray.length == Array.from(new Set(stringArray)).length ? true : false;
  // 判断数组中是否存在某元素
  function arr( arr, val ){
    var tof = false;
    for(var i = 0; i < arr.length; i++ ){
      if( arr[i] == val ) {
        tof = true;
      }
    }
    return tof;
  }
  // 获取字符串数组最大长度
  function getLen( stringarray ){
    var noRepeatArray = [];
    for( var i = 0; i < stringarray.length; i ++ ){
      // 是否可PUSH
      if( !arr( noRepeatArray, stringarray[i] ) ){
        // 是否为临界值
        if( i == stringarray.length -1 ){
          noRepeatArray.push( stringarray[i] );
          if( noRepeatArray.length > result ){
            result = noRepeatArray.length;
            break;
          }else{
            break;
          }
        }else{
          noRepeatArray.push( stringarray[i] );
        }
      }else{
        if( noRepeatArray.length > result ){
          result = noRepeatArray.length;
          break;
        }else{
          break;
        }
      }
    }
    return result
  }
  // 判断是否为单字符串
  // 循环去掉数组第一个元素
  if(stringArray.length == 1){
    result = 1;
  }else{  
    for( var j = 0; j < len; j ++ ){
      getLen(stringArray);
      stringArray.shift();
    } 
  } 
  if( ok ) {
    return s.length
  }else{
    return result
  }
}

 

posted @ 2017-05-04 11:25  slardarr  阅读(230)  评论(0编辑  收藏  举报