用c++库函数轻松解决回文问题

《Accelerated C++》6.1学到的,这个解决回文问题的方案很简单,有必要把它记录下来。

begin返回一个迭代器,它会从容器的最后一个元素开始,并且从后向前地逆序访问容器。
equal函数比较了两个序列以判断它们是否包含是相等的值。传递给equal的头两个迭代器指定了第一个序列。第三个参数则是第二个序列的起点。equal函数假定第二个序列的长度与第一个相同,因此它并不需要一个结尾迭代器。我们传递s.rbegin()以作为第二个序列的起点,这个调用的作用是从s的结尾向前逆向地比较数值。equal函数将把s中的第一个字符和最后一个比较。用这个去做HD2029可以秒杀。

#include<iostream> 
#include<string>
#include<vector>
using namespace std; 
bool is_palindrome(const string & s) {   
  return equal(  s.begin() , s.end() ,s.rbegin()); 
} 
int main(){
    string s;
    while(cin>>s)
        cout<<is_palindrome(s);
    return 0;
}

 

posted @ 2013-08-08 17:21  兰幽  阅读(773)  评论(0编辑  收藏  举报