leetcode906 超級回文數 沒有魔數

2021-09-24 04:51:37 字數 2027 閱讀 7999

這道題答案其實只有70個最多,所以最快的解題者只要10ms(取巧);

我是用正常人能理解的思路進行解題

例如:2839-38456739538(隨手寫的兩個數字)

先進行開方處理得到53-196103

:我先定義"回文源",就是通過這個數可以得到回文數,加上boolean值可以獲得回文,boolean用了區分是否重複最後一位,如(45,false)->454,(374,true)->374473;

得到回文源5,true-196true

判斷6,true->9,true之間是否有超級回文源

判斷10,false-999,false之間是否有超級回文源

判斷100,true - 195,true之間是否有超級回文源

單獨判斷5,true和196true(不僅判斷是否超級回文源,還要判斷得到的數是否在區間內)

:回文源的高階是:10,false->99,false->10,true->99,true->100,false

雖然範圍是在1018內,但是開方之後就是109,回文源就是105,運算時間是可以控制的

**:

package month6;

public class test906

//重要思路:先把給的數進行開方處理,然後找到回文源,把所有回文源內的數進行判斷

int allnum = 0;

public int superpalindromesinrange(string l, string r)

if (dend <= end && hui(dend) && dend > dbigin)

return allnum;

}private void dod(int staa, int endd, int stal, int endl, boolean stsa, boolean ensa)

}return;

}int fmax = stal * 10 - 1;

for (int i = staa + 1; i <= fmax; i++)

}int ll = stal;

boolean sa = stsa;

if (sa == true) else

//高階順序是:10false->10true->100false

//形成的回文分別是3位數、4位數、5位數

while (true)

int min = ll;

int max = ll * 10 - 1;

for (int i = min; i <= max; i++)

}if (sa == true) else

}int lmin = ll;

if (lmin == 0)

for (int i = lmin; i < endd; i++) }}

//判斷乙個數是不是回文

private boolean hui(long dend)

//找到一數的回文源的最小值,101和1001的回文源都是10

private int geta(long staa)

//乙個數、它的大小位,加上是否雙位數,如 123,100,false ->12321

private long getlong(int num, int sta, boolean sa) else

}//得到乙個數的回文

private int geth(int num, boolean sa)

return geth(num);

}//得到乙個數的回文

private int geth(int num)

return hui;

}//得到乙個數的回文

private long geth(long num)

return hui;

}//n的k次方

private int getm(int n, int k)

return m;

}}

LeetCode 906 超級回文數

如果乙個正整數自身是回文數,而且它也是乙個回文數的平方,那麼我們稱這個數為超級回文數。現在,給定兩個正整數l和r 以字串形式表示 返回包含在範圍 l,r 中的超級回文數的數目。示例 輸入 l 4 r 1000 輸出 4 解釋 4,9,121,以及 484 是超級回文數。注意 676 不是乙個超級回文...

LeetCode 超級回文數(轉換減小範圍)

如果乙個正整數自身是回文數,而且它也是乙個回文數的平方,那麼我們稱這個數為超級回文數。現在,給定兩個正整數 l 和 r 以字串形式表示 返回包含在範圍 l,r 中的超級回文數的數目。示例 輸入 l 4 r 1000 輸出 4 解釋 4,9,121,以及 484 是超級回文數。注意 676 不是乙個超...

力扣 超級回文數

如果乙個正整數自身是回文數,而且它也是乙個回文數的平方,那麼我們稱這個數為超級回文數。現在,給定兩個正整數 l 和 r 以字串形式表示 返回包含在範圍 l,r 中的超級回文數的數目。示例 輸入 l 4 r 1000 輸出 4 解釋 4,9,121,以及 484 是超級回文數。注意 676 不是乙個超...