JavaScript 实现双向队列并用此来测试一个单词是否为回文
题目出自《数据结构与算法 JavaScript 描述》一书第五章,习题 5.2
代码如下:
/*************** Deque 类的实现 *************/
function Deque() {
this.dataStore = [];
this.enqueue = enqueue;
this.dequeue = dequeue;
this.unshift = unshift;
this.pop = pop;
this.front = front;
this.back = back;
this.toString = toString;
this.empty = empty;
}
// 向队尾添加一个元素
function enqueue(element) {
this.dataStore.push(element);
}
// 从队尾删除一个元素
function pop() {
return this.dataStore.pop();
}
// 增加元素到队首
function unshift(element) {
this.dataStore.unshift(element);
}
// 删除队首元素
function dequeue() {
return this.dataStore.shift();
}
// 读队首和队尾的元素
function front() {
return this.dataStore[0];
}
function back() {
return this.dataStore[this.dataStore.length-1];
}
// 显示队列内所有元素
function toString() {
var retStr = "";
for (let i = 0; i < this.dataStore.length; ++i) {
retStr += this.dataStore[i] + "\n";
}
return retStr;
}
// 判断队列是否为空
function empty() {
if (this.dataStore.length == 0) {
return true;
} else {
return false;
}
}
/******************** 用 Deque 类判断一个给定单词是否为回文*****************/
function isHuiWen(str) {
var d = new Deque();
for (let i = 0; i < str.length; ++i) {
d.enqueue(str[i]);
}
var front = '', end = '';
// 如果单词长度是奇数,则中间那个不需要判断
while (!d.empty() && d.dataStore.length != 1) {
front = d.dequeue();
end = d.pop();
if (front != end) {
return false;
}
}
return true;
}
var testStr = "levvel";
console.log(isHuiWen(testStr));
(本文完)
--------------------------------------------------------------------------------------------------------------------------
致虚极,守静笃
使用我的阿里云幸运券,购买阿里云ECS有优惠:阿里云幸运券
>>>>> 腾讯云新用户优惠 <<<<<
--------------------------------------------------------------------------------------------------------------------------
致虚极,守静笃
使用我的阿里云幸运券,购买阿里云ECS有优惠:阿里云幸运券
>>>>> 腾讯云新用户优惠 <<<<<