8 Réponses
+ 4
ROOPASHREE S ,
here some hints:
one possible way is to take the input number (integer value) and split it to individual integer digits. since there is no function in python which can do this, we can use a while loop.
# split number to digits:
> to store the individual digits, we can use a list. create an empty list.
> take a number as input and store it as an integer number in a varisble like `inp_num`
> use a while loop with the condition that runs as long as `inp_num` is greater than 0
> use the `inp_num` and do a modulo division (%) by 10. this gives the last digit from `inp_num`
store it in the list.
> now we have to remove the last digit from `inp_num`. use an integer division (//)
> after the condition of the while loop, we have a list of individual integer digits.
> we can check now if this list equals to a reverse of the list. if yes => input is a palindrome.
+ 4
Wong Hei Ming ,
you may be right with your first statement, but there are several challenges out there that are requesting to check for a palindrome number. and this is also frequently asked in interviews.
> in all of these cases it is not allowed to use the number as a string and string methods, but to solve the task only using numerical values. this requires to use specific algorithms.
+ 3
Attempts?
+ 3
Wong Hei Ming ,
using a list as a temporarily buffer for the digits does not real look tricky, but i agree with you that your suggestion how the algorithm could be is a good way to solve the task.
+ 1
Lothar
I didn’t know a challenge like this exist. It is good to learn something new.
I make a little research and found a piece of code in C++ to this question.
Although I don’t know C++, but they are close enough to Java (which I’m learning) so I can read the code, which turns out to be a same technique as you described.
However your explanation seems a bit tricky by using list data type. I though we are only allowed to use numerical data type only.
To avoid using list, we can store the extracted digit into a variable. In the next loop we multiple it by 10 and add another digit extracted.
+ 1
x = input()
print(x==x[::-1])
0
Palindrome numbers?
123321 is not the same as '123321'.
A number (I assume it is an integer) is a number, there is no "forward" or "backward" of a number, unless you treat it as a string.
If you want to check if a string is palindrome no or, just compare the original state with the reversed state.
There are many ways to reverse a string and doesn't need to be a while loop. You can find it out with a little search with google.
0
With a little thinking, this kind of challenge exists probably memory was very limited in the back, maybe 640k or less. So a creative way to solve problems was needed.
With this in mind, I searched how to check python code memory usage and come up with cProfile, a standard module. While the output doesn't exactly shows the usage, it shows number of function call.
Apparently using a list as buffer make more calls, I assume it means more memory usage.
https://sololearn.com/compiler-playground/cH63tZuFUwt8/?ref=app