日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 08字符串转整数09回文数

發布時間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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%public boolean isPalindrome(int x) {if(x<0)return false;String va=x+"";int left=0,right=0;if(va.length()%2==0){left=va.length()/2-1;right=left+1;}else {left=va.length()/2;right=left;}while (left>=0) {if(va.charAt(left)!=va.charAt(right))return false;left--;right++;}return true;}

    但很遺憾這種方法效率比較低只能打敗11%的人呢,大概18ms左右。

    但是可以換一種思路,使用字符串比較效率較低。可以使用數字類型計算一遍得到逆向數值然后進行比較最終值是否相同:

    public boolean isPalindrome(int x) {if(x<0)return false;int team=x;int va=0;while (x>0) {va=va*10+x%10;x/=10;}if(va==team)return true;return false;}

    這樣就大概9-10ms左右,9ms大概打敗98%而10ms只40%多。

    最后

    本周打開結束,本周打開題解為:

    05最長回文串
    06Z字形變換&07整數反轉

    歡迎點贊關注。也可添加筆者微信公眾號:bigsai,回復進群即可加入打卡。

    總結

    以上是生活随笔為你收集整理的LeetCode 08字符串转整数09回文数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。