摘要:所以可以采用從右至左遍歷數字并按照添加順序有小到大生成新的數字,判斷最終生成的數字是否和遍歷結束的數字相等。這里需要考慮一種特殊情況,即當末尾為的情況。
題目要求:判斷一個數字是否是回數,不能同使用自然數生成string或數組那樣的方式實現
回數的定義:一個自然數,如果該自然數從左向右讀和從右向左讀都是一樣的數,則這個數為回數(隱藏條件,回數不可以為負數)
將數字看成是一個數組,使用兩個指針分別指向這個數字的首尾,并且判斷當前左右指針上的數字是否相等,相等則繼續推進直至左右指針相遇
//雙指針,將左右指針分別指向數字的首位 public boolean isPalindrome(int x) { if(x<0 || (x%10==0&&x!=0)){ return false; } int rightPointer = 0; //獲得右指針的初始值,即數組的長度 while(Math.pow(10, rightPointer)<=x){ rightPointer++; } rightPointer--; int leftPointer = 0; while(rightPointer>leftPointer){ int left = (int) (x/Math.pow(10, leftPointer)%10); int right = (int) (x/(Math.pow(10, rightPointer))%10); leftPointer++; rightPointer--; if(left!=right){ return false; } } return true; }思路二:判斷生成的數字是否相等
上面用數組的思維解決數字的遍歷是一種方法,但是要先通過一圈遍歷獲得右指針,增加了時間。所以可以采用從右至左遍歷數字并按照添加順序有小到大生成新的數字,判斷最終生成的數字是否和遍歷結束的數字相等。
這里需要考慮一種特殊情況,即當末尾為0的情況。若不優先考慮該情況,就會生成錯誤的結果
public boolean isPalindrome2(int x) { if(x<0 || (x%10==0&&x!=0)){ return false; } int res = 0; while(x>res){ res = res*10 + (x%10); x /= 10; } return (x==res || x==(res/10)); }
想要了解更多開發技術,面試教程以及互聯網公司內推,歡迎關注我的微信公眾號!將會不定期的發放福利哦~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66888.html
摘要:題目要求現在有一個字符串,將分割為多個子字符串從而保證每個子字符串都是回數。我們只需要找到所有可以構成回數的并且得出最小值即可。即將字符作為,將字符所在的下標列表作為。再采用上面所說的方法,利用中間結果得出最小分割次數。 題目要求 Given a string s, partition s such that every substring of the partition is a ...
摘要:題目要求輸入一個字符串,計算用這個字符串中的值構成一個最長回數的長度是多少。直觀來看,我們立刻就能想到統計字符串中每個字符出現的次數,如果該字符出現次數為偶數,則字符一定存在于回數中。這個細節需要注意。 題目要求 Given a string which consists of lowercase or uppercase letters, find the length of the...
摘要:回文數判斷一個整數是否是回文數。回文數是指正序從左向右和倒序從右向左讀都是一樣的整數。示例輸入輸出示例輸入輸出解釋從左向右讀為。因此它不是一個回文數。 LeetCode9.回文數 JavaScript 判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false...
摘要:思路二指針最大長度現在我們從回數的特點入手。因此,假設當前得到的回數的最大長度為,我們可以判斷或者是不是回數。假設此時指針指向,而已知最大回數子字符串的長度為。 題目要求 Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s i...
Problem Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121Output: trueExample 2: Input: -121Output: falseExplana...
閱讀 1740·2021-11-25 09:43
閱讀 1785·2021-11-24 10:41
閱讀 3105·2021-09-27 13:36
閱讀 811·2019-08-30 15:53
閱讀 3567·2019-08-30 15:44
閱讀 866·2019-08-30 14:03
閱讀 2572·2019-08-29 16:38
閱讀 996·2019-08-29 13:23