2017年9月16日 星期六

leetcode-680 Valid Palindrome II

題意: 給定一字串,最多可以消去一個字,返回是否為回文字串

解題思路: 簡單,因為只能削去一個字,所以當遇到第一個不符合回文字串的字時,有兩種處理方式, 削去目前的字(即表示從下一個位置開始處理),或削去比對的另一個字,將對方處理位置減一
,考慮這兩種處理方式,即為所求

c++ code:
class Solution {
public:
    bool validPalindrome(string s) {
        int len=s.length()-1;
        int ch=len/2;
        int i;
        int ok=1;
        for(i=0;i<=ch;i++)
        {
            if(s[i]!=s[len-i])
              break;  
        }
        for(int j=i+1;j<=ch;j++)
        {
            if(s[j]!=s[len+1-j])
            {
                ok=0;
                break;
            } 
        }
        if(ok)
            return true;
        ok=1;
        for(int j=i;j<=ch;j++)
        {
            if(s[j]!=s[len-1-j])
            {
                ok=0;
                break;
            } 
        }
        if(ok)
            return true;
        return false;
        
    }
};

沒有留言:

張貼留言