LeetCode 08字符串转整数09回文数
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 08字符串转整数09回文数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
維護公眾號:bigsai ,點贊再看,養成習慣!
08字符串轉整數
題目描述:
分析:
本題主要是字符串的處理。需要注意以下幾點:
- 去除字符前的空字符
- 第一個有效字符必須是符號或者數字
- 只能有一個符號
- 注意數值越界
所以在具體處理的時候,你可以截取一個字符然后直接轉成一個數字類型(考慮越界)但是并不推薦。這里個人使用遍歷字符串數字字符時候將其與'0'字符差轉換成數字進行計算,當超出int范圍直接停止。
通過代碼為:
public static int myAtoi(String str) { int zheng = 1;int index=0;long value=0;while (index<str.length()&&str.charAt(index)==' ') {//防止"" 和 " "等index++;}if(index>str.length()-1)return 0;if(str.charAt(index)=='+') {index++;}else if (str.charAt(index)=='-') {zheng=-1;index++;}for(int j=index;j<str.length();j++){ if(str.charAt(j)>='0'&&str.charAt(j)<='9'){value=value*10+str.charAt(j)-'0';if(value*zheng>Integer.MAX_VALUE)return Integer.MAX_VALUE;if(value*zheng<Integer.MIN_VALUE)return Integer.MIN_VALUE;}else {break;}}value=zheng*value; return (int)value;}09回文數
描述:
判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個回文數。
分析:
此題比較簡單,需要考慮以下幾點:
- 不能是負數,負數不滿足回文數的要求
- 考慮奇數偶數長度數字會文性
提供兩種方法:第一種將數字轉成字符串,從中間向兩側拓展比較。
實現代碼為:
但很遺憾這種方法效率比較低只能打敗11%的人呢,大概18ms左右。
但是可以換一種思路,使用字符串比較效率較低。可以使用數字類型計算一遍得到逆向數值然后進行比較最終值是否相同:
這樣就大概9-10ms左右,9ms大概打敗98%而10ms只40%多。
最后
本周打開結束,本周打開題解為:
05最長回文串
06Z字形變換&07整數反轉
歡迎點贊關注。也可添加筆者微信公眾號:bigsai,回復進群即可加入打卡。
總結
以上是生活随笔為你收集整理的LeetCode 08字符串转整数09回文数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 06Z字形变换07整数
- 下一篇: LeetCode精讲题 10正则表达式匹