Welcome to Subscribe On Youtube
Formatted question description: https://leetcode.ca/all/2396.html
2396. Strictly Palindromic Number
- Difficulty: Medium.
- Related Topics: Math, Two Pointers, Brainteaser.
- Similar Questions: Palindrome Number, Stone Game.
Problem
An integer n
is strictly palindromic if, for every base b
between 2
and n - 2
(inclusive), the string representation of the integer n
in base b
is palindromic.
Given an integer n
, return true
if **n
is strictly palindromic and false
otherwise**.
A string is palindromic if it reads the same forward and backward.
Example 1:
Input: n = 9
Output: false
Explanation: In base 2: 9 = 1001 (base 2), which is palindromic.
In base 3: 9 = 100 (base 3), which is not palindromic.
Therefore, 9 is not strictly palindromic so we return false.
Note that in bases 4, 5, 6, and 7, n = 9 is also not palindromic.
Example 2:
Input: n = 4
Output: false
Explanation: We only consider base 2: 4 = 100 (base 2), which is not palindromic.
Therefore, we return false.
Constraints:
4 <= n <= 105
Solution (Java, C++, Python)
-
class Solution { // every base from 2 to n-1 of integer n // must be a palindrome. This is pretty unlikely public boolean isStrictlyPalindromic(int n) { for(int i = 2; i < n-1; i++) { // Integer.toString(int n, int i) converts n to base i if(!isPalindrome(Integer.toString(n, i))) { return false; } } return true; } private boolean isPalindrome(String str) { int left = 0; int right = str.length()-1; while(left < right) { if(str.charAt(left) != str.charAt(right)) { return false; } left++; right--; } return true; } } ############ class Solution { public boolean isStrictlyPalindromic(int n) { return false; } }
-
class Solution: def isStrictlyPalindromic(self, n: int) -> bool: return False ############ # 2396. Strictly Palindromic Number # https://leetcode.com/problems/strictly-palindromic-number/ class Solution: def isStrictlyPalindromic(self, n: int) -> bool: def numberToBase(n, b): digits = [] while n: digits.append(n % b) n //= b return "".join(map(str, digits[::-1])) for k in range(2, n - 2 + 1): s = numberToBase(n, k) if s != s[::-1]: return False return True
-
class Solution { public: bool isStrictlyPalindromic(int n) { return false; } };
-
func isStrictlyPalindromic(n int) bool { return false }
-
function isStrictlyPalindromic(n: number): boolean { return false; }
-
impl Solution { pub fn is_strictly_palindromic(n: i32) -> bool { false } }
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).