一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。
具体的:
1.大雁发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”。
2.大雁会依次完整发出”quack”,即字符串中’q’ ,‘u’, ‘a’, ‘c’, ‘k’ 这5个字母按顺序完整存在才能计数为一只大雁。如果不完整或者没有按顺序则不予计数。
3.如果字符串不是由’q’, ‘u’, ‘a’, ‘c’, ‘k’ 字符组合而成,或者没有找到一只大雁,请返回-1。
输入描述
一个字符串,包含大雁quack的叫声。1 <= 字符串长度 <= 1000,字符串中的字符只有’q’, ‘u’, ‘a’, ‘c’, ‘k’。
输出描述
大雁的数量
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
quackquack
输出
1
function resolve(str = "qququauqccauqkkcauqqkcaukccakkck") {
let arr = str.split("");
let q = [];
let u = 0;
let a = 0;
let c = 0;
let range = [];
for (let i = 0; i < arr.length; i++) {
switch (arr[i]) {
case "q":
q.push(i); break;
case "u":
if (u + 1 <= q.length) u++;
break;
case "a":
if (a + 1 <= u) a++;
break;
case "c":
if (c + 1 <= a) c++;
break;
case "k":
if (c >= 1) {
range.push([q.shift(), i]);
u--;
a--;
c--;
}
break;
default: return -1;
}
}
if (!range.length) return -1;
let max = 1;
for (let i = 0; i < range.length; i++) {
let count = 1;
for (let j = i + 1; j < range.length; j++) {
if (range[i][1] >= range[j][0]) count++;
}
max = Math.max(max, count);
}
console.log(max);
}
resolve();