码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode] 1. Valid Palindrome

时间:2014-11-09 19:33:04      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   os   sp   for   strong   

leetcode的第一题,回文数判断。

原题如下:

 

For example, "A man, a plan, a canal: Panama" is a palindrome. "race a car" is not a palindrome.

 

Note: Have you consider that the string might be empty? This is a good question to ask during an interview.

 

For the purpose of this problem, we define empty string as valid palindrome.

 

回文数是个很基础的东西,这里给了两个example作为提示:给的样本中可能会有空格,标点和特殊符号等,要考虑一下先判断string是否是纯string再去进行回文判断。

leetcode给的答案是伪代码,也解释的很清楚:

 

public boolean isPalindrome(String s) 
{
    int i = 0, j = s.length() - 1;

    while (i < j) 
        {

        while (i < j && !Character.isLetterOrDigit(s.charAt(i))) i++;
        while (i < j && !Character.isLetterOrDigit(s.charAt(j))) j--;
        
        if (Character.toLowerCase(s.charAt(i))
            != Character.toLowerCase(s.charAt(j))) 
                {
            return false;
        }

        i++; j--;

    }

    return true;

}
    

 

思路结束,具体在操作的时候就是C++的能力本身了。随手写的代码(日后改)[2014-11-09]:

#include <string>
#include <algorithm>

bool isPalindrome(string s) 
{
    if (s.empty())
    {
        return false;
    }
    string tmp = "";
    for (int i = 0; i < s.size(); i++)
    {
        if (isalnum(s.at(i)))
        {
            tmp += s[i];
        }
    }
    transform(tmp.begin(), tmp.end(), tmp.begin(), ::toupper);
    for (int i = 0; i < tmp.size() / 2; i++)
    {
        if (tmp.at(i) != tmp.at(tmp.size() - 1 - i))
        {
            return false;
        }
    }

    return true;
}


C++水平还不够,但是过了。回文的问题以后再补充。

 

[leetcode] 1. Valid Palindrome

标签:style   blog   io   color   ar   os   sp   for   strong   

原文地址:http://www.cnblogs.com/TinyBox/p/4085728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!