亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

每天練一練Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(shù)

 更新時間:2021年08月18日 14:09:56   作者:肥學(xué)  
這篇文章主要介紹了Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(shù),每天練一練,水平在不知不覺中提高,需要的朋友快過來看看吧

題目

請你來實(shí)現(xiàn)一個 myAtoi(string s) 函數(shù),使其能將字符串轉(zhuǎn)換成一個 32 位有符號整數(shù)(類似 C/C++ 中的 atoi
函數(shù))。

函數(shù) myAtoi(string s) 的算法如下:

讀入字符串并丟棄無用的前導(dǎo)空格 。
檢查下一個字符(假設(shè)還未到字符末尾)為正還是負(fù)號,讀取該字符(如果有)。 確定最終結(jié)果是負(fù)數(shù)還是正數(shù)。如果兩者都不存在,則假定結(jié)果為正。
讀入下一個字符,直到到達(dá)下一個非數(shù)字字符或到達(dá)輸入的結(jié)尾。字符串的其余部分將被忽略。
將前面步驟讀入的這些數(shù)字轉(zhuǎn)換為整數(shù)(即,“123” -> 123, “0032” -> 32)。如果沒有讀入數(shù)字,則整數(shù)為 0。必要時更改符號(從步驟 2 開始)。
如果整數(shù)數(shù)超過 32 位有符號整數(shù)范圍 [−231, 231 − 1]需要截斷這個整數(shù),使其保持在這個范圍內(nèi)。具體來說,小于 −231 的整數(shù)應(yīng)該被固定為 −231 ,大于 231 − 1 的整數(shù)應(yīng)該被固定為231 − 1 。
返回整數(shù)作為最終結(jié)果。

注意:

本題中的空白字符只包括空格字符 ' ' 。
除前導(dǎo)空格或數(shù)字后的其余字符串外,請勿忽略 任何其他字符。
 
示例 1:
 
輸入:s = "42"
輸出:42
解釋:加粗的字符串為已經(jīng)讀入的字符,插入符號是當(dāng)前讀取的字符。
第 1 步:"42"(當(dāng)前沒有讀入字符,因?yàn)闆]有前導(dǎo)空格)
         ^
第 2 步:"42"(當(dāng)前沒有讀入字符,因?yàn)檫@里不存在 '-' 或者 '+')
         ^
第 3 步:"42"(讀入 "42")
           ^
解析得到整數(shù) 42 。
由于 "42" 在范圍 [-231, 231 - 1] 內(nèi),最終結(jié)果為 42 。
示例 2:
 
輸入:s = "   -42"
輸出:-42
解釋:
第 1 步:"   -42"(讀入前導(dǎo)空格,但忽視掉)
            ^
第 2 步:"   -42"(讀入 '-' 字符,所以結(jié)果應(yīng)該是負(fù)數(shù))
             ^
第 3 步:"   -42"(讀入 "42")
               ^
解析得到整數(shù) -42 。
由于 "-42" 在范圍 [-231, 231 - 1] 內(nèi),最終結(jié)果為 -42 。
示例 3:
 
輸入:s = "4193 with words"
輸出:4193
解釋:
第 1 步:"4193 with words"(當(dāng)前沒有讀入字符,因?yàn)闆]有前導(dǎo)空格)
         ^
第 2 步:"4193 with words"(當(dāng)前沒有讀入字符,因?yàn)檫@里不存在 '-' 或者 '+')
         ^
第 3 步:"4193 with words"(讀入 "4193";由于下一個字符不是一個數(shù)字,所以讀入停止)
             ^
解析得到整數(shù) 4193 。
由于 "4193" 在范圍 [-231, 231 - 1] 內(nèi),最終結(jié)果為 4193 。
示例 4:
 
輸入:s = "words and 987"
輸出:0
解釋:
第 1 步:"words and 987"(當(dāng)前沒有讀入字符,因?yàn)闆]有前導(dǎo)空格)
         ^
第 2 步:"words and 987"(當(dāng)前沒有讀入字符,因?yàn)檫@里不存在 '-' 或者 '+')
         ^
第 3 步:"words and 987"(由于當(dāng)前字符 'w' 不是一個數(shù)字,所以讀入停止)
示例 5:

輸入:s = "-91283472332"
輸出:-2147483648
解釋:
第 1 步:"-91283472332"(當(dāng)前沒有讀入字符,因?yàn)闆]有前導(dǎo)空格)
         ^
第 2 步:"-91283472332"(讀入 '-' 字符,所以結(jié)果應(yīng)該是負(fù)數(shù))
          ^
第 3 步:"-91283472332"(讀入 "91283472332")
                     ^
解析得到整數(shù) -91283472332 。
由于 -91283472332 小于范圍 [-231, 231 - 1] 的下界,最終結(jié)果被截斷為 -231 = -2147483648 。
 

提示:

0 <= s.length <= 200 s 由英文字母(大寫和小寫)、數(shù)字(0-9)、' ‘、'+'、'-' 和 ‘.' 組成
通過次數(shù)323,466提交次數(shù)1,494,392

一點(diǎn)點(diǎn)思路

剛看到這個題(我的心里,好家伙題目這么常不想寫了肯定很難),不知道大家有沒有這樣想,哈哈哈。仔細(xì)看完如果你看了之前幾篇例題的話這道題簡直張飛吃豆芽——小菜一碟,所以大家知道了我們一塊刷題的重要性了吧。不信的話我們往下看,去驗(yàn)證是不是都是以前做的方法。

開干
常規(guī)介紹一種函數(shù)

之前介紹的StringBuilder()和toCharArray()在這里都有用到哦。今天給大家介紹的函數(shù)是Math函數(shù)他作為一種數(shù)學(xué)函數(shù)適用范圍還是挺廣的,我們看看他有那些功能吧。

Math.PI 記錄的圓周率
Math.E 記錄e的常量
Math中還有一些類似的常量,都是一些工程數(shù)學(xué)常用量。
Math.abs 求絕對值
Math.sin 正弦函數(shù) Math.asin 反正弦函數(shù)
Math.cos 余弦函數(shù) Math.acos 反余弦函數(shù)
Math.tan 正切函數(shù) Math.atan 反正切函數(shù) Math.atan2 商的反正切函數(shù)
Math.toDegrees 弧度轉(zhuǎn)化為角度 Math.toRadians 角度轉(zhuǎn)化為弧度
[color=red]Math.ceil 得到不小于某數(shù)的最大整數(shù) 比它大的數(shù)[/color]
[color=red]Math.floor 得到不大于某數(shù)的最大整數(shù) 比它小的數(shù)[/color]
Math.IEEEremainder 求余
Math.max 求兩數(shù)中最大
Math.min 求兩數(shù)中最小
Math.sqrt 求開方
[color=red]Math.pow 求某數(shù)的任意次方, 拋出ArithmeticException處理溢出異常[/color]
Math.exp 求e的任意次方
Math.log10 以10為底的對數(shù)
Math.log 自然對數(shù)
Math.rint 求距離某數(shù)最近的整數(shù)(可能比某數(shù)大,也可能比它?。?
[color=red]Math.round 求距離某數(shù)最近的整數(shù),返回int型或者long型(上一個函數(shù)返回double型)[/color]
Math.random 返回0,1之間的一個隨機(jī)數(shù)

源碼及分析

public class test {
	public static String myAtoi(String s) {
		char[] list=s.toCharArray();
		StringBuilder lis=new StringBuilder();
		for(int i=0;i<list.length;i++) {
			if(list[i]==' ') {
				continue;
			}
			else if(list[i]=='+'||list[i]=='-'||(Integer.valueOf(list[i])>=48&&Integer.valueOf(list[i])<=57)) {
				lis.append(list[i]);
			}else {
				return lis.toString();
			}
		}
		return lis.toString();
	}
	public static void main(String[] args) {
		long a=Integer.parseInt(myAtoi("words and 987")==""? "0":myAtoi("words and 987"));
		int b= (int) Math.max(Math.min(a, Math.pow(2, 31)-1), Math.pow(-2, 31));
		System.out.println(b);
		
	}

}

當(dāng)然這是我自己的格式寫的,沒有按官方的格式。來吧我們開始逐一解釋:

public static String myAtoi(String s) {
		//下面兩行就是之前講的將字符串變?yōu)樽址麛?shù)組
		char[] list=s.toCharArray();
		StringBuilder lis=new StringBuilder();
		//下面主要是以字符長度為次數(shù)對字符進(jìn)行字符串轉(zhuǎn)換整數(shù)
		for(int i=0;i<list.length;i++) {
		//根據(jù)題目要求開始碰到空格,丟棄無用的前導(dǎo)空格
			if(list[i]==' ') {
			//continue的功能我就不介紹了吧,夠基礎(chǔ)的了
				continue;
			}//下面這個判斷在下面詳細(xì)介紹
			else if(list[i]=='+'||list[i]=='-'||(Integer.valueOf(list[i])>=48&&Integer.valueOf(list[i])<=57)) {
				lis.append(list[i]);
			}else {//碰到除上面條件以外的字符直接結(jié)束返回該字符串
				return lis.toString();
			}
		}
		return lis.toString();
	}

else if(list[i]=='+'||list[i]=='-'||(Integer.valueOf(list[i])>=48&&Integer.valueOf(list[i])<=57)) {
				lis.append(list[i]);

這個部分是判斷+和-還有每個字符的ascll值準(zhǔn)備的Integer.valueOf()就是計(jì)算ascll值的函數(shù),只要在0-9之間的數(shù)都滿足。

  • 其實(shí)應(yīng)該可以直接寫成這種形式
else if(list[i]=='+'||list[i]=='-'||(list[i]>='0'&&list[i]<='9')) {
				lis.append(list[i]);

接著我們就剩下了主函數(shù)部分,這部分在提交的時候要變換的只不過我在寫講解的時候要用到就沒有按照官方的那種格式。

public static void main(String[] args) {
//這里面涉及了三目運(yùn)算不過我們之前就講過法則,這里的主要功能是防止下面這種情況返回為一個空字符,我們就把它至為零
  long a=Integer.parseInt(myAtoi("words and 987")==""? "0":myAtoi("words and 987"));
  //就是上面說的Math函數(shù)的主要用法,因?yàn)榇鸢敢袛喾秶?
  //所以我們先讓我們求出來的數(shù)和上界(2^31)-1比找最小的
  //再和-2^31比找最大的得出來的數(shù)就是我們要找的,不懂可以私信或者評論給詳解
  int b= (int) Math.max(Math.min(a, Math.pow(2, 31)-1), Math.pow(-2, 31));
  System.out.println(b);

 好了今天的算法題就到這里,你學(xué)會了嗎?總的來說這道題對我們前面幾道題進(jìn)行了回憶,如果你沒想起來建議去看看。學(xué)過的不能忘了。

到此這篇關(guān)于每天練一練Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(shù)的文章就介紹到這了,更多相關(guān)Java函數(shù)與算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring中Eureka的自我保護(hù)詳解

    Spring中Eureka的自我保護(hù)詳解

    這篇文章主要介紹了Spring中Eureka的自我保護(hù)詳解,當(dāng)Eureka Server節(jié)點(diǎn)在短時間內(nèi)丟失過多客戶端時(可能發(fā)生了網(wǎng)絡(luò)分區(qū)故障),那么這個節(jié)點(diǎn)就會進(jìn)入自我保護(hù)模式,一旦進(jìn)入該模式,Eureka Server就會保護(hù)服務(wù)注冊表中的信息,需要的朋友可以參考下
    2023-11-11
  • spring-redis-session 自定義 key 和過期時間

    spring-redis-session 自定義 key 和過期時間

    這篇文章主要介紹了spring-redis-session 自定義 key 和過期時間,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 基于String不可變字符與StringBuilder可變字符的效率問題

    基于String不可變字符與StringBuilder可變字符的效率問題

    這篇文章主要介紹了String不可變字符與StringBuilder可變字符的效率問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實(shí)現(xiàn)讀取html文本內(nèi)容并按照格式導(dǎo)出到excel中

    Java實(shí)現(xiàn)讀取html文本內(nèi)容并按照格式導(dǎo)出到excel中

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)讀取html文本提取相應(yīng)內(nèi)容按照格式導(dǎo)出到excel中,文中的示例代碼講解詳細(xì),需要的可以參考下
    2024-02-02
  • Java實(shí)現(xiàn)單鏈表反轉(zhuǎn)的多種方法總結(jié)

    Java實(shí)現(xiàn)單鏈表反轉(zhuǎn)的多種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)單鏈表反轉(zhuǎn)的多種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Mybatis/Mybatis-Plus駝峰式命名映射的實(shí)現(xiàn)

    Mybatis/Mybatis-Plus駝峰式命名映射的實(shí)現(xiàn)

    本文主要介紹了Mybatis-Plus駝峰式命名映射的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Maven中jar包沖突原理與解決辦法

    Maven中jar包沖突原理與解決辦法

    這篇文章主要介紹了Maven中jar包沖突原理與解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java開發(fā)之Jdbc分頁源碼詳解

    java開發(fā)之Jdbc分頁源碼詳解

    這篇文章主要介紹了java開發(fā)之Jdb分頁源碼詳解,需要的朋友可以參考下
    2020-02-02
  • Java ArrayAdapter用法案例詳解

    Java ArrayAdapter用法案例詳解

    這篇文章主要介紹了Java ArrayAdapter用法案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java中實(shí)現(xiàn)控制臺打印sql語句方式

    java中實(shí)現(xiàn)控制臺打印sql語句方式

    這篇文章主要介紹了java中實(shí)現(xiàn)控制臺打印sql語句方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論