#include <limits> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型 * @return bool布尔型 */ bool isSpecialNumber(int num) { // write code here vector<int> nums; int yu; while(num!=0){ yu=num%10; num=num/10; nums.push_back(yu); } int i=0,j=nums.size()-1,temp; while(i<j){ temp=nums[j]; nums[j]=nums[i]; nums[i]=temp; i++;j--; } int left=0,right=nums.size()-1; while(left<right){ if(left+1==right&&nums[left]==1&&nums[right]%2==0)return true; if(nums[left]==nums[right]){ left++; right--; }else{ if(nums[left]<nums[right]){ if(nums[left]!=1){ return false; }else{ left++; if(nums[left]-nums[right]>1)return false; else if(nums[left]-nums[right]==1){ nums[left]=1; }else if(nums[left]==nums[right]){ left++; } right--; nums[right]--; } }else{ if(nums[left]-nums[right]>1) return false; else{ nums[left]=1; right--; } } } } if(left==right&&nums[left]%2==1)return false; return true; } };
从数字本身出发判断其是否是一个特殊数组,若前后两端的数完全一致,则返回true