用JS实现交错“01”串

算法描述

如果一个“01”串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如:“1”,“10101”,“0101010”,都是交错01串。
小易现在有一个01串。小易想找出一个最长的这样的子串的长度是多少。
输入描述:输入包括字符串s,s的长度length(1 <= length <= 50),字符串中只包含“0”和“1”
输出描述:输出一个整数,表示最长的满足要求的子串长度。
输入例子:111101111
输出例子:3

说明:js代码用jQuery写,在写js前记得引入jQuery文件
首先,我们需要一个输入框和一个按钮

<p>请输入01串:</p>
<input type="text" />
<button>输出</button>

TIM图片20180126210030.png
然后在点击按钮时判断输入的内容是否符合要求,即长度在1到50之间,并且只能出现0和1。

<script src="jquery.min.js"></script>
<script>
  //判断输入的内容是否符合格式
  $("button").on("click", function () {
    var val = $("input").val();          //获取input的value值
    var re = /[^01]/;                    //正则表达式判断是否满足只有01的条件
    var maxLen = 1;                      //用来存储01串的最大长度
    var count = 1;                       //用来记录当前01串的长度
    if (val.length < 1 || val.length > 50) {
      alert("请输入长度大于等于1或小于等于50的内容!");
    } else if (re.test(val)) {
        alert("请输入0和1!");
    } else {                             //判断最长的01串
        for (var i = 0; i < val.length - 1; i++) {
          //判断字符串的第i项和i+1项是否相等,如果不相等就让count+1
          if (val.charAt(i) != val.charAt(i + 1)) {      
            count ++;
              //判断count是否大于最大长度,如果大于,就让maxLen等于count
              if (count > maxLen) {            
                 maxLen = count;
              }
           } else {
                 count = 1;
           }
         }
        alert(maxLen);
      }
    $("input").val("");                 //最后清空输入框的值
  })
</script>

TIM图片20180126211825.png
TIM图片20180126211912.png

TIM图片20180126212853.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值