广州货运网站建设,网站的基本建设投资,小公司网站,免费动漫反转 一个整数意味着倒置它的所有位。
例如#xff0c;反转 2021 得到 1202 。反转 12300 得到 321 #xff0c;不保留前导零 。
给你一个整数 num #xff0c;反转 num 得到 reversed1 #xff0c;接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num #x…
反转 一个整数意味着倒置它的所有位。
例如反转 2021 得到 1202 。反转 12300 得到 321 不保留前导零 。
给你一个整数 num 反转 num 得到 reversed1 接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num 返回 true 否则返回 false 。 示例 1
输入num 526
输出true
解释反转 num 得到 625 接着反转 625 得到 526 等于 num 。示例 2
输入num 1800
输出false
解释反转 num 得到 81 接着反转 81 得到 18 不等于 num 。
示例 3
输入num 0
输出true
解释反转 num 得到 0 接着反转 0 得到 0 等于 num 。
一、信息
1.反转的定义
2.这道题目的目的是给我一个整数num反转num得到reversed1接着反转reversed1得到reversed2,如果reversed2等于num,返回true否则false
二、分析
条件1告诉我反转是什么
条件2告诉我返回值的类型和规则其实很简单因为返回torf因此我们可以定义函数的类型位布尔类型返回布尔值即可。
思路
看到这道题目我有一条思路
第一条路我们可以用取余和取百分比的不断获取整数num的个十百千位然后逆序然后再用同样的函数调用一边即可我的答案的第一部分首先考虑了实现一个反转整数的函数。我采用了常见的通过模10取余数得到数字的最后一位然后整除10来移除最后一位的方法来实现整数的反转。这个思考过程较为直接和基础是初学者常用的解题方法。
第二条思路
五、实现
我的答案
C
#include stdio.h
#include stdbool.hint reverse(int num) {int reversed 0;while (num 0) {int remainder num % 10;reversed reversed * 10 remainder;num num / 10;}return reversed;
}bool isReversedTwiceTheSame(int num) {int reversed1 reverse(num);int reversed2 reverse(reversed1);return reversed2 num;
}int main() {int num1 526;int num2 1800;int num3 0;printf(%d - %s\n, num1, isReversedTwiceTheSame(num1) ? true : false);printf(%d - %s\n, num2, isReversedTwiceTheSame(num2) ? true : false);printf(%d - %s\n, num3, isReversedTwiceTheSame(num3) ? true : false);return 0;
}Leetcode题解 源代码
#include stdbool.hbool isSameAfterReversals(int num) {return num 0 || num % 10 ! 0;
}总结
学到了什么
从这道题目中我们可以学到几个关键的概念和编程实践
1. **数学思维** - **充分必要条件**的思考是解题的关键。首先考虑何时两次反转会得到原数然后思考这些条件是不是必要的是不是充分的。 - **模运算**通过对10取模来判断一个数的个位数。
2. **编程思维** - 逻辑简化题目可能看起来复杂需要多步操作但有时候通过逻辑推理和数学运算可以极大地简化问题例如这道题目中无需实际进行反转操作通过判断就可以得到结果。 - 代码优化简化逻辑并不总是降低代码的可读性。在许多情况下它实际上会使代码变得更清晰更易于理解同时还提高了代码的效率。
3. **细节处理** - 对于特殊的边界情况例如这里的0需要单独考虑。 - 注意题目中的条件限制和例子这会帮助我们更快地理解题目要求。
4. **问题分析与解决策略** - 在解决问题时我们首先需要深入理解问题分析问题的本质。这道题的本质是考察反转操作对数的位数的影响以及如何通过数学方法简化计算。 - 其次我们需要寻找解决问题的策略。这可能涉及到对问题进行逐步分解或者转化为更容易解决的问题。
通过综合运用数学知识、编程技能、逻辑分析和解决问题的策略我们可以更有效地解决编程问题。