經典演算法題 尋找最近的回文數

2021-10-05 18:49:49 字數 1462 閱讀 6411

給定乙個整數 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 是...