算法描述
如果一个“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>
然后在点击按钮时判断输入的内容是否符合要求,即长度在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>