728. Self Dividing Numbers

来源:互联网 发布:painter自动上色软件 编辑:程序博客网 时间:2024/05/22 03:05
class Solution {public:    vector<int> selfDividingNumbers(int left, int right) {        vector<int> re;          for(int i=left; i<=right;i++){              int temp=i;              while(temp !=0 && temp %10 != 0){                  if(i % (temp % 10) != 0) break;                  temp = temp / 10;              }              if(temp == 0) re.push_back(i);          }          return re;      }};


这个题竟然做不出来。

自己写了个调用子函数:

class Solution {public:    vector<int> selfDividingNumbers(int left, int right) {         vector<int> res;        for (int i = left; i <= right; i++) {            if (isSelfDividingNumbers(i))                res.push_back(i);        }        return res;    }        bool isSelfDividingNumbers(int i)    {       if (i%10)       {          int  temp=i;           if(temp!=0)           {           if(i%(temp%10)!=0)                return false;               temp=temp/10;           }                      if(temp==0)               return true;       }        }};


返回值写的不对。

参考百度写了另一个答案:

public:    vector<int> selfDividingNumbers(int left, int right) {         vector<int> res;        for (int i = left; i <= right; i++) {            if (isSelfDividingNumbers(i))                res.push_back(i);        }        return res;    }        bool isSelfDividingNumbers(int i)    {         int  temp=i;           while(temp%10)           {           if(i%(temp%10)!=0)                return false;            temp=temp/10;           }                   return true;        }        };


submission不行;

自己找出来问题;判断语句不对:

class Solution {public:    vector<int> selfDividingNumbers(int left, int right) {         vector<int> res;        for (int i = left; i <= right; i++) {            if (isSelfDividingNumbers(i))                res.push_back(i);        }        return res;    }        bool isSelfDividingNumbers(int i)    {         int  temp=i;           while(temp)           {           if(temp%10==0||i%(temp%10)!=0)                return false;            temp=temp/10;           }                   return true;        }        };

更简洁的答案:

class Solution {public:    vector<int> selfDividingNumbers(int left, int right) {         vector<int> res;        for (int i = left; i <= right; i++) {            if (isSelfDividingNumbers(i))                res.push_back(i);        }        return res;    }        bool isSelfDividingNumbers(int nums)    {         int  temp=nums,digit=0;           while(temp)           {             digit=temp%10;           if(digit==0||nums%digit!=0)                return false;            temp=temp/10;           }                   return true;        }        };