這道題答案其實只有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 不是乙個超...