程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> leetcode:Valid Palindrome

leetcode:Valid Palindrome

編輯:關於C++

一、 題目

題目給出一個字符串,求出它是否為回文字符串,其中只有字母和數字是有效字符,其他的字符可以忽略。

例如:"Aman, a plan, a canal: Panama" 是回文字符串.

"race a car" is not a palindrome.不是回文字符串

二、 分析

看到這個題目我首先想到的是使用兩個數組將有效字符串保存,其中一個正序一個逆序,然後做比較。但是考慮到效率和空間使用,可以使用“兩指針法”,即設置一個左指針一個右指針,相向移動,判斷他們的有效值是否相等,不相等則直接false,直到相遇。


class Solution {
public:
	//判斷字符是不是字母或字符 
	bool isAlphanumeric(char c)
     {
         if((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z')||(c >= '0' && c <= '9'))
             return true;
         else return false;
     }
    bool isPalindrome(string s) {
        
        int len = s.size();
        //判斷是否為空,為空則返回真 
        if(len == 0) return true;
        int left=0;
        int right = len-1;
        while(left=0){
        		right--;
        	}
        	else {
        		//注意字母的大小寫,這裡只需要判斷字母是否相等或差的絕對值是否為32 
        		if(s[left] != s[right]&&fabs(s[left]-s[right])!=32)
        			return false;
        		left++;
        		right--;
			}
        }
        return true;
    }
};


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved