数组算法 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
  }
}
时间: 2024-12-25 19:00:04

数组算法 3的相关文章

数组算法:

数组算法:1),复制算法:  例如:(int[] a={1,2,3,4,5,}; int[] b=new int[a.length];//b的长度由a的长度来决定: for(int i=0;i<a.length;i++){//写a.length或者写b.length都可以.长度一样: a[i]=b[i];    //复制一份给b; } for(int i=0;i<a.length;i++){ 输出b:(System.out.println(b[i]+" ")); }//输出

JAVA 数组算法(复制、查找、插入)

一.复制数组算法 //数组复制算法 public class Test{ public static void main(String[] args){ int[] arrA = {100,800,500,600,700}; int[] arrB = new int[arrA.length]; //用for循环把A的对应下标值复制给B for(int i=0;i<arrA.length;i++){ arrB[i] = arrA[i]; } //输出arrB for(int i=0;i<arrB

字符串模式匹配KMP算法中的next数组算法及C++实现

一.问题描述: 对于两个字符串S.T,找到T在S中第一次出现的起始位置,若T未在S中出现,则返回-1. 二.输入描述: 两个字符串S.T. 三.输出描述: 字符串T在S中第一次出现的起始位置,若未出现,则返回-1. 四.输入例子: ababaababcbababc 五.输出例子: 5 六.KMP算法解析: KMP算法分为两步,第一步是计算next数组,第二步是根据next数组通过较节省的方式回溯来比较两个字符串. 网络上不同文章关于next数组的角标含义略有差别,这里取参考文献中王红梅<数据结构

javascript常用数组算法总结

1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i < arr.length; i++) { if (result.indexOf(arr[i]) == -1) result.push(arr[i]); } return result; } 1 2 3 4 5 6 7 8 9 //利用数组的indexOf方法 function unique (arr)

ubuntu16.04下配置JDK 1.8+安装Java EE,并实现最大子数组算法

软工第二次作业: 1.在个人电脑中安装一个集成开发环境(Microsoft Visual Studio.Eclipse或其它工具均可),要求该环境能够提供单元自动测试功能: 2.记录安装过程,并将全部内容发表在博客中: 3.实现最大子数组和算法,并将该段代码上传至Coding.net系统中: 4.自行选择合适的覆盖标准并设计测试用例对该段代码进行测试,并将测试结果发布在博客中,结果以如下表格形式完成. 本文为干货,希望有用,欢迎评论. 由于我的labtop上安装的是ubuntu16.04系统,其

基础数组算法问题

今日,java课上机,旁边一同学让我写一个排序算法,虽然之前学过数据结构,但当时我却真心没回忆起来,于是乎,课后,我回到宿舍,用Java将这几个基本的数组排序问题写了一下.其实,看起来很简单,可是当时确实没有回忆起来.很不应该!以下代码我自己测试了,均能运行.写这篇博文,也是为了提醒我自己,以后这种基本的东西必须得让自己多留几个心眼! package exercise; public class TestArray { //求数组的最大值 public int getMax(int[] arr)

C++数组排成最大的数(数组,算法,排列)

//把数组排成最大的数(数组.算法). //题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最大的一个. //例如输入数组{32, 321},则输出这两个能排成的最大数字32321.. //或者输入数组{10,9,33,1000}输出这四个能排列的最大数字933101000. #include <iostream> #define MAXSIZE 100 using namespace std; template<typename T> class Gri

6、数组算法

数组常用方法: 1.方法的作用 2.该方法是否需要传参 3.该方法是否有返回值 4.原数组是否发生改变一.增 删 替换 5个 ---原数组不变 var ary=[1,3,5]; var res=ary.push(3,"aa") console.log(res) // push // 末尾增加内容 // unshift // 开头增加内容 // pop // 删除最后一项 // shift // 删除第一项 // splice(n,m) // 从n开始 删除m个 // splice(n,

Javascript数组算法和技巧总结

Js-arrayMethod https://github.com/HerbertKarajan/Js-arrayMethod List unique an array 数组去重 random string 随机字符串 find duplicate char 寻找重复字符 find the maxium value 寻找最大值 Sort Algorithms bubble Sort 冒泡排序 quick Sort 快速排序 selection sort 选择排序 shell sort 选择排序