作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要检查文本是否是回文,通过堆栈的概念,我有一个创建堆栈的函数,另一个函数将检查它是否是回文堆栈单词并取消堆栈。
问题是我不知道如何继续进行此验证。
我的代码:
<html>
<head>
<script type ="text/javascript" />
function FILO(){
this.stack = new Array();
this.Push = function(obj){
this.stack[this.stack.length] =obj;
}
this.Pop =function(){
if(this.stack.length>0){
var obj = this.stack[this.stack.length - 1];
this.stack.splice(this.stack.length -1,1);
return obj;
}else {
alert("Theres no objects in the stack");
}
}
}
function palindrome() {
var mystack = new FILO();
var text1;
var text2;
var i;
var t;
text1 = prompt("Type a text: ");
i = text1.length;
t = text1.length;
do{
mystack.Push(text1.substr(t-i,1));
i--;
}while(i>0);
do{
text2 = mystack.Pop();
document.write(text2, "</br>");
}while(i>0);
if(text1 === text2) {
alert("It is a palindrome");
}
else {
alert("It's not a palindrome");
}
}
</script>
</head>
<body>
<h1>Verification of Palindrome </h1>
<p>Press the button to see if a word is a palindrome or not</p>
<form>
<input type = "button" onClick ="palindrome()" value = "Verifiy">
</form>
</body>
</html>
但是这段代码不起作用,因为在输入时它表示堆栈中没有对象,并且它们最终不会被插入,因此我可以取消堆栈。我怎样才能做到这一点?
PS:我是 JavaScript 新手,因此代码可能会很困惑,对此表示抱歉。
最佳答案
你们其实很亲近。您只需将弹出的字母连接在一起,然后与text1
进行比较(您已经这样做了)。
您的第二个 do while
中也有一个错误,您使用与第一个循环相同的迭代器 i
,而您可能应该使用您的 t
code> 变量并递减它。这是带有固定代码的示例
function FILO() {
this.stack = new Array();
this.Push = function(obj) {
this.stack[this.stack.length] = obj;
}
this.Pop = function() {
if (this.stack.length > 0) {
var obj = this.stack[this.stack.length - 1];
this.stack.splice(this.stack.length - 1, 1);
return obj;
} else {
alert("Theres no objects in the stack");
}
}
}
function palindrome() {
var mystack = new FILO();
var text1;
var text2 = "";
var i;
var t;
text1 = prompt("Type a text: ");
i = text1.length;
t = text1.length;
do {
mystack.Push(text1.substr(t - i, 1));
i--;
} while (i > 0);
do {
text2 += mystack.Pop(); //Here this should be += instead of =
t--
document.write(text2, "</br>");
} while (t > 0); //use and decrement t variable in this do while
if (text1 === text2) {
alert("It is a palindrome");
} else {
alert("It's not a palindrome");
}
}
<html>
<head>
</head>
<body>
<h1>Verification of Palindrome </h1>
<p>Press the button to see if a word is a palindrome or not</p>
<form>
<input type="button" onClick="palindrome()" value="Verifiy">
</form>
</body>
</html>
关于javascript - 如何在 JavaScript 中使用 FILO 检查回文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46329334/
我是一名优秀的程序员,十分优秀!