判断一个串是否回文串

栈的应用——判断一个串是否是回文串 
[问题描述]  
判断一个串是否是回文串。 
[基本要求] 
由于输入的一个回文串可能无穷大,所以用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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值