Xin chào những người hạnh phúc 👋! Hôm nay chúng ta sẽ xem xét một vấn đề LeetCode khá dễ dàng
- Số palindrom
Báo cáo vấn đề
Xác định xem một số nguyên là một palindrom. Một số nguyên là một palindrom khi nó đọc cùng một phía sau như về phía trước.
Theo dõi: Bạn có thể giải quyết nó mà không chuyển đổi số nguyên thành một chuỗi không? Could you solve it without converting the integer to a string?
Constraints:
-231
Ví dụ
Ví dụ 1:
Input: x = 121
Output: true
Ví dụ 2:
Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Ví dụ 3:
Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Ví dụ 4:
Input: x = -101
Output: false
Phân tích
Chúng ta cần tìm một số cho là palindrom hay không. Một số palindrom là một số mà khi đảo ngược cho cùng một số. Ví dụ, 747 là số palindrom và 526 không phải vì khi đảo ngược, nó cho 625 không bằng 526.
Ngoài ra, vì điều hiển nhiên từ các ví dụ rằng các số âm không phải là palindromes vì chúng bắt đầu với -
và khi đảo ngược dấu hiệu -
sẽ đến ở cuối không hợp lệ. Do đó, chúng tôi chỉ phải kiểm tra các số dương
Cách tiếp cận
Chúng ta có thể dễ dàng giải quyết vấn đề này bằng cách đảo ngược số đã cho và so sánh số đảo ngược với số đã cho.
- Nếu số là âm, hãy trả về
0, nếu không sẽ tiến hành #2.Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
- Lưu trữ số đã cho
1 trong một biếnInput: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
2. Chúng tôi đang làm điều đó bởi vì chúng tôi sẽ thực hiện các hoạt động của mình trênInput: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
2 và do đó, giá trị của nó sẽ thay đổi. Chúng tôi sẽ sử dụngInput: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
1 ở cuối chương trình để so sánh với số đảo ngược.Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
- Đảo ngược số [giống như LeetCode #7 - Số nguyên ngược].
- Trả về
5 Nếu số ngược và số đã cho bằng nhau,Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
0 khác.Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Độ phức tạp về thời gian
Vì chúng ta đang đi qua toàn bộ chữ số số theo chữ số, nên độ phức tạp của thời gian phải là o [log10n]. Lý do đằng sau Log10 là vì chúng tôi đang xử lý các số nguyên là cơ sở 10.O[log10n]. The reason behind log10 is because we are dealing with integers which are base 10.
Độ phức tạp không gian
Do đó, chúng tôi không sử dụng bất kỳ cấu trúc dữ liệu nào cho các hoạt động tạm thời, do đó, độ phức tạp không gian là O [1].O[1].
Hãy để Lừa có được bàn tay của chúng tôi bị bẩn với mã 😍.
Mã số
Java
public class PalindromeNumber {
public boolean isPalindrome[int x] {
// Base condition
if [x 0] {
reverse = reverse * 10 + number % 10;
number /= 10;
}
return x == reverse;
}
}
Python
def isPalindrome[x: int] -> bool:
# Base condition
if x 0]: dig = n%10 rev = rev*10+dig n = n // 10 if [temp == Rev]: In ["Số là một palindrom!"]