Easy_02

题目

难点:如何判断翻转之后是否超出了int类型的范围

解决办法

(1) 使用long int 类型 扩大范围进行判断,最后进行强制类型转换返回int类型

(2) 将范围的各位数 存储在vector数组中注意比较。不好,消耗内存的同时需要额外的循环比较判断。(做题时采用了该方法,结果并不理想)

int reverse(int x){

int c = 1.0;

if (x < 0){

c = -1.0;

}

int result = 0;

vector<int> remains; //余数部分

int max[10] = {2,1,4,7,4,8,3,6,4,8};

int min[10] = {2,1,4,7,4,8,3,6,4,7};

int k = 0;

int remain;

while(x != 0){

remain = x % 10 * c;

remains.push_back(remain);

x = x / 10;

if (k > 10)

return result;

++k;

}

if (k == 10){

if (c == -1.0){

for (int i = 0; i < 10;++i){

if (remains[i] < min[i])

break;

else if (remains[i] == min[i])

    continue;

else

return 0;

}

}

else

for (int i = 0; i < 10; ++i){

if (remains[i] < max[i])

break;

else if (remains[i] == max[i])

    continue;

else

return 0;

}

}

int step = pow(10,remains.size() - 1);

for (vector<int>::iterator it = remains.begin();it != remains.end();++it){

result = result + *it * step;

step /= 10;

}

return result * c ;

}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,269评论 0赞 2
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,222评论 0赞 2
  • 贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...
    fredal阅读 9,503评论 3赞 52
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 4,201评论 0赞 6
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 14,091评论 0赞 89

友情链接更多精彩内容