【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
最近一段时间,发现自己编写代码的能力下降了很多。所以,网上找了一下,看看有没有类似可以提高的项目。偶尔看别人都在leetcode上刷题目,感觉特别有意思,所以拿来练练手。因为leetcode上每个题目有很多测试用例,所以你上传的代码必须要全部通过这些测试用例才行。
不多说,为了不丢人。先找容易的题目开始,这样也好尽快上手。atoi,其实就是字符串转变为整数的代码。看着容易,其实也不容易,因为你需要考虑各种情况,其实这对我们提高代码质量是很有帮助的。代码你可以根据自己的需要写成cpp、java或者python的格式。
因为我的机器上没有安装vc编译器,所以只能根据网站反馈的信息进行调整,看日志前后花了快1个半小时,工作了这么多年,这个成绩还是很丢人的。大家可以根据自己的需要到leetcode上面试一试,权当练习好了。看到这份博客的同学最好先不要看代码,自己去试一试,看看能不能在保证正确的时候保证性能的最大化。
为了不侵犯原作者的版权,这边只是给出我个人对题目的理解和答案,当然仅仅是抛砖引玉了。
#inlude <iostream> using namespace std; class Solution { public: static int atoi(const char* str) { int index = 0; int neg = 0; int total = 0; int len = strlen(str); char val = 0; int count = 0; if(!len) return total; while(str[index] == ‘ ‘) index ++; if(str[index] == ‘+‘) index ++; else if(str[index] == ‘-‘) { neg = 1; index++; } for(; index < len; index ++) { val = str[index] - ‘0‘; count ++; if(val < 0 || val > 9) break; if(count > 10) { if(neg) total = 0x80000000; else total = 0x7fffffff; goto end; } if(!neg && count == 10) { if(val > (0x7fffffff - total * 10)) { total = 0x7fffffff; goto end; } }else if(neg && count == 10){ if((unsigned int)val > (unsigned int)((-total * 10) - (int)(0x80000000))) { total = 0x80000000; goto end; } } total = total * 10 + val; } if (neg) total = -total; end: return total; } };
时间: 2024-10-16 13:42:22