給定乙個整數 n ,你需要找到與它最近的回文數(不包括自身)。
「最近的」定義為兩個整數差的絕對值最小。
示例 1:
輸入: "123"
輸出: "121"
如果陣列的字串長度 == 1,數字n - 1
開頭為1,9**9為乙個候選答案 例:100000,答案為99999
開頭為9, 10**01為乙個候選答案 例:99999,答案為100001
如果本身對稱,則把最中間的乙個(或兩個)位數減(如果0則加
例:123321,答案為122221
例:120021,答案為121121
如果不對稱:
把前半部分逆序替換掉後半部分 例:1223,答案為1221
把最中間的乙個(或兩個)位數加一 例:1283,答案為1331,而非1221
把最中間的乙個(或兩個)位數減一 例:1800,答案為1771,而非1881
public string nearestpalindromic(string n)// 原始資料
long num = long.parselong(n);
// 原始資料直接 轉回文
long huiwen = long.parselong(huiwen(n));
// 從中間點數字 +1 再轉回文 比如 9999 -> 10099 -> 10001
long huiwenadd1 = long.parselong(midadd1(n));
// 從中間點數字 -1 再轉回文 比如 10001 -> 9901 -> 9999
long huiwenmin1 = long.parselong(midmin1(n));
// 找尋差值最小的數字
LeetCode 尋找最近的回文數
給定乙個整數 n 你需要找到與它最近的回文數 不包括自身 最近的 定義為兩個整數差的絕對值最小。示例 1 輸入 123 輸出 121 注意 n 是由字串表示的正整數,其長度不超過18。如果有多個結果,返回最小的那個。思路分析 如果陣列的字串長度 1,數字n 1 開頭為1,9 9為乙個候選答案 例 1...
Leetcode 564 尋找最近的回文數
分析 是一道數學題。距離最近的回文子串,總計三種可能情況。一是左半邊拷貝到右半邊,二是中間為0,則一半減一,再拷貝,三是中間為9,則一半加一,再拷貝。還有一些特殊情況。針對三位數,最近回文串範圍一定在 99,1001 之間,則再加上兩種情況。總共五種,減去與自身重複的選項。放進set。找到diff最...
經典演算法題 尋找峰值
峰值元素是指其值大於左右相鄰值的元素。給定乙個輸入陣列 nums,其中 nums i nums i 1 找到峰值元素並返回其索引。陣列可能包含多個峰值,在這種情況下,返回任何乙個峰值所在位置即可。你可以假設 nums 1 nums n 示例 1 輸入 nums 1,2,3,1 輸出 2 解釋 3 是...