栈的应用——判断一个串是否是回文串
[问题描述]
判断一个串是否是回文串。
[基本要求]
由于输入的一个回文串可能无穷大,所以用string储该串。
[解题算法]
1,取得该串长度
2,判断串长是否为单数,
3,遍历串,将串的前半字符推进栈,
4,如果串长为单数,跳过中间字符
5,从栈中弹出字符与串的后半部分作比较
#include
<
iostream
>
#include < stack >
#include < string >
using namespace std;
// true 是回文
bool Ishuiwen( const string & str)
... {
stack<char> S;
int len; // string 长度
int i; // 遍历string的
bool dan; // 长度是否单数
len = str.length();
dan = (len % 2 == 0) ? false : true;
for(i = 0; i < len / 2; i++)
S.push(str[i]);
if(dan == true)
++i;
for( ; i < len; i++)
...{
if(S.top() != str[i])
return false;
S.pop();
}
return true;
}
int main()
... {
string str;
cin >> str;
if(Ishuiwen(str))
cout << str << " is huiwen" << endl;
else
cout << str << " isn't huiwen" << endl;
return 0;
}
#include < stack >
#include < string >
using namespace std;
// true 是回文
bool Ishuiwen( const string & str)
... {
stack<char> S;
int len; // string 长度
int i; // 遍历string的
bool dan; // 长度是否单数
len = str.length();
dan = (len % 2 == 0) ? false : true;
for(i = 0; i < len / 2; i++)
S.push(str[i]);
if(dan == true)
++i;
for( ; i < len; i++)
...{
if(S.top() != str[i])
return false;
S.pop();
}
return true;
}
int main()
... {
string str;
cin >> str;
if(Ishuiwen(str))
cout << str << " is huiwen" << endl;
else
cout << str << " isn't huiwen" << endl;
return 0;
}