使用棧與佇列判斷迴文串
阿新 • • 發佈:2019-02-05
摘要
迴文串是一種順序與逆序以相同的的一類特殊的字串(形如”asdfdsa”)。可利用棧(先進後出)與佇列(先進先出)的特性來判斷字串是否為迴文串。
實現
Moslems.cpp
#include<stack>
#include<queue>
#include<iostream>
using namespace std;
#define STR_LENGH 300
/*
利用棧和佇列判斷輸入的字串是否為迴文串
*/
bool isMoslems(char* str) {
stack<char> s;
queue<char > q;
string moslems = str;
//輸入棧與佇列的內容
for (int i = 0; i < moslems.length(); i++) {
char temp = moslems[i];
s.push(temp);
q.push(temp);
}
//char值相同繼續判斷,直到棧與佇列為空
while (!s.empty() && !q.empty())
{
if (s.top() != q.front()) {
break ;
}
s.pop();
q.pop();
}
//棧與佇列全為空則為迴文串
return s.empty() && q.empty();
}
void main() {
int times = 0;
while (times<4)
{
cout << "輸入一個字串:";
char str[STR_LENGH];
gets_s(str, STR_LENGH);
char* ok = isMoslems(str) ? "YES" : "NO";
cout << ok << endl;
times++;
}
system("pause");
return;
}