图图的学习计划3.17

LeetCode每日一题

题目:无重复字符的最长子串**
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    var childString = ''; //用来存放当前子串
		var longString = '';//用来存放无重复最长的子串
		for(var i in s) {
			if(childString.indexOf(s[i]) == -1) {
				childString += s[i];
				if(childString.length > longString.length) {
					longString = childString
				}		
			}else{
				childString += s[i]
				childString = childString.slice(childString.indexOf(s[i])+1);//返回的是找到重复字符之后的子串不包括第一次找到的重复字符所以加一
			}
		}
    return longString.length;
};
解题思路:

检索传入的字符串,按顺序一个个检索。如没有重复的则添加到当前字符串childString中,并与longString的长度比较,如childString的长度大于longString则将值赋予longString。如遇到重复字符,先添加到childString中,并将childString中第一次出现这个重复字符之前和包括它自己删除,只取后面的字符串。

VUE的学习

改变url的值

location.hash = ‘aaa’ 只改变url不会重新请求数据
location.href = ‘aaa’ 改变url并重新请求数据
history.pushState ({ },’ ‘,‘aaa’) 只改变url不会重新请求数据并以堆栈的形式存放记录可以返回
history.replaceState ({ },’ ',‘aaa’)只改变url不会重新请求数据不可以返回
history.back() 返回 相当于 history.go(-1)
history.forward() 前进 相当于 history.go(1)

VUE使用router

import Vue from 'vue' //导入VUE
import Router from 'vue-router'//导入路由
import Home from '../view/Home'//导入组件

Vue.use(Router) //使用路由

//创建一个路由对象并导出
export default new Router({
  routes: [
    {
      path: '/', redirect: '/home' //重定向
    }
    {
      path: '/home', component: Home   //当界面url变成/home时渲染Home组件
    }],
  mode: 'history' //默认使用hash,url可能不怎么好看
})

在入口函数里导入router.js并使用

import router from './router'

new Vue({
  el: '#app',
  router,
  render: c => c(app)
  // template: '<App/>'
  // components: { App },
})

在App.vue加入router-link与router-view

<router-link to="/home"></router-link>//可以改变url
<router-view/> //显示组件

关于router-link标签的其他属性

tag 改变标签的渲染类型 如<router-link to="/home" tag='button'></router-link>
replace 是url无法返回相当于使用了history.replaceState,使用时无需赋值
active-class 改变处于活跃状态下的class名如<router-link to="/home" tag='button' active-class='active'></router-link>也可在router.js中修改linkActiveClass

export default new Router({
  routes: [
    {
      path: '/', redirect: '/home' //重定向
    }
    {
      path: '/home', component: Home   //当界面url变成/home时渲染Home组件
    }],
  linkActiveClass: 'active'
})

通过代码实现跳转路由

methods: {
    homeBtn () {
      this.$router.push('/home')
    }
  }

动态路由和获取动态路由的值

在路由入口index.js中

    {
      path: '/user/:userId', component: User //通过:userid来存放动态的值
    }

在router-link中修改

<router-link :to="'/user/'+userId"></router-lin>//通过v-bind来获取到data中userId的值

在User组件中获取值
通过计算属性,通过this.$route来获取当前的路由对象,然后通过params属性来获取用来存放值userId

  computed: {
    userId () {
      return this.$route.params.userId
    }
  }

路由的懒加载

在路由变换时要用到组件时在进行加载而不是一进去就全部加载组件

// import Home from '../view/Home'
// import User from '../view/User'

const Home = () => import('../view/Home')
const User = () => import('../view/User')

路由的嵌套

{
      path: '/more',
      component: More,
      children: [ //通过children属性进行嵌套
        {
          path: 'news', component: News
        },
        {
          path: 'message', component: Message
        },
        {
          path: '',
          redirect: 'news'
        }
      ]
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值