拿品牌做網(wǎng)站算侵權(quán)嗎google海外推廣
今天再次做到需要int轉(zhuǎn)化成String,從而方便運(yùn)算的題目。(當(dāng)然還可以直接使用int運(yùn)算也是沒(méi)問(wèn)題的)
再次出現(xiàn)了我容易弄混淆的問(wèn)題,Integer.valueOf和ASCII碼轉(zhuǎn)化的差異?
其實(shí)之前我以及有記錄過(guò)該問(wèn)題,詳見(jiàn)我的博客
Integer.valueOf()用于字符和字符串的區(qū)別_paypayphone的博客-CSDN博客
舉個(gè)例子:
Integer.valueOf("1")得到的是1,
而Integer.valueOf('1')得到的是49,是他的ASCII碼。
這就好比,我們可以直接用字符進(jìn)行加減,int add = '1' + 'a'; 等于他們的ASCII碼之和,他們其實(shí)并沒(méi)有經(jīng)歷強(qiáng)制轉(zhuǎn)化;但是我們沒(méi)辦法將字符串進(jìn)行加減,只能進(jìn)行拼接!
class Solution {boolean result = false;public boolean isHappy(int n) {dfs(n,1);return result;}public void dfs(int n, int count) {if(n == 1) { result = true;return;}if(count == 10000) {return;}String s = "" + n;int squareSum = 0;for(int i=0;i<s.length();i++) {squareSum += (s.charAt(i)-'0')*(s.charAt(i)-'0');// squareSum += Integer.valueOf(s.charAt(i)+"") * //Integer.valueOf(s.charAt(i)+""); //也是一樣的效果//前者是通過(guò)ASCII碼相減,轉(zhuǎn)化成int,后者是直接將字符串應(yīng)用于Integer.valueOf}count++;dfs(squareSum, count);}
}
然后說(shuō)回方法本身,我的方法是循環(huán)到10000次如果得不到1就自動(dòng)停止遞歸,并且用了比較占內(nèi)存空間的字符串類型。
其實(shí)更應(yīng)該直接使用int計(jì)算squareSum,并且充分理解題意;從而實(shí)現(xiàn)用哈希集合檢驗(yàn)是否是無(wú)限循環(huán)。