在size()函数中,我使用了split然后找到了数组的大小。除了拆分以外,是否还有其他方法或逻辑来查找由连字符(---)分隔的字符串的大小。
var Stack = function(){
this.callStack='';
}
Stack.prototype.push = function(val){
if(this.callStack==''){
this.callStack = this.callStack.concat(val);
}else {
this.callStack = this.callStack.concat('---', val);
}
}
Stack.prototype.pop = function(){
this.removeThis = this.callStack.lastIndexOf(('---'));
this.str = this.callStack.slice(this.removeThis+3);
this.callStack = this.callStack.substring(0, this.callStack.lastIndexOf('---'));
return this.callStack;
}
Stack.prototype.size = function(){
var sizes = this.callStack.split('---');
return sizes.length;
}
//This will tell the latest element inserted in the stack:
Stack.prototype.peek= function(){
var peekabu = this.callStack.slice(this.callStack.lastIndexOf('---')+3);
return peekabu;
}
var stackInst = new Stack();
stackInst.push('Ankit');
stackInst.push('Ashu');
stackInst.push('Ash');
stackInst.push('Pikachu');
console.log('Size of the Stack is:', stackInst.size());
答案 0 :(得分:0)
......不使用split或字符串以外的任何内容
这是一个奇怪的限制。
您可以使用replace
替换所有非连字符,并取结果的长度:
return this.callStack.replace(/[^-]/g, '').length;
如果您是指---
出现的次数,而不只是连字符的数目,请除以3 (自然地,假设那里没有其他连字符):>
return this.callStack.replace(/[^-]/g, '').length / 3;
但是要确定只计算---
,您可以将回调传递给replace
:
let size = 0;
this.callStack.replace(/---/g, function(m) {
++size;
});
return size;
但同样,这是一个奇怪的限制,结果这些都是奇怪的解决方案。