Next Palindrome Using Same Digits
Problem Descriptionβ
Visit LeetCode for the full problem description.
Solutionsβ
Solution 1: C# (Best: 157 ms)β
| Metric | Value |
|---|---|
| Runtime | 157 ms |
| Memory | 40.5 MB |
| Date | 2022-01-19 |
Solution
public class Solution {
public string NextPalindrome(string num) {
int len = num.Length;
char[] result = new char[len];
int mid = len/2;
int[] arr = new int[mid];
for (int i = 0; i < mid; i++)
{
arr[i] = (int)(num[i] - '0');
}
int pivot = -1;
for (int i = mid - 1; i > 0; i--)
{
if (arr[i - 1] < arr[i])
{
pivot = i - 1;
break;
}
}
if (pivot == -1) return "";
else
{
int index = -1;
for (int i = mid - 1; i >= pivot; i--)
{
if (arr[i] > arr[pivot])
{
index = i;
break;
}
}
Swap(arr, pivot, index);
Array.Reverse(arr, pivot + 1, mid - pivot - 1);
}
for (int i = 0, j =len-1; i < j; i++, j--)
{
result[i] = (char)(arr[i]+'0');
result[j] = (char)(arr[i]+'0');
}
if(len%2 == 1) result[len/2] = num[len/2];
return new string(result);
}
private void Swap(int[] arr, int i , int j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
Complexity Analysisβ
| Approach | Time | Space |
|---|---|---|
| Solution | To be analyzed | To be analyzed |