欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

題目

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

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

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

注意:

本題中的空白字符只包括空格字符 ' ' 。
除前導(dǎo)空格或數(shù)字后的其余字符串外,請(qǐng)勿忽略 任何其他字符。
 
示例 1:
 
輸入:s = "42"
輸出:42
解釋?zhuān)杭哟值淖址疄橐呀?jīng)讀入的字符,插入符號(hào)是當(dāng)前讀取的字符。
第 1 步:"42"(當(dāng)前沒(méi)有讀入字符,因?yàn)闆](méi)有前導(dǎo)空格)
         ^
第 2 步:"42"(當(dāng)前沒(méi)有讀入字符,因?yàn)檫@里不存在 '-' 或者 '+')
         ^
第 3 步:"42"(讀入 "42")
           ^
解析得到整數(shù) 42 。
由于 "42" 在范圍 [-231, 231 - 1] 內(nèi),最終結(jié)果為 42 。
示例 2:
 
輸入:s = "   -42"
輸出:-42
解釋?zhuān)?
第 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
解釋?zhuān)?
第 1 步:"4193 with words"(當(dāng)前沒(méi)有讀入字符,因?yàn)闆](méi)有前導(dǎo)空格)
         ^
第 2 步:"4193 with words"(當(dāng)前沒(méi)有讀入字符,因?yàn)檫@里不存在 '-' 或者 '+')
         ^
第 3 步:"4193 with words"(讀入 "4193";由于下一個(gè)字符不是一個(gè)數(shù)字,所以讀入停止)
             ^
解析得到整數(shù) 4193 。
由于 "4193" 在范圍 [-231, 231 - 1] 內(nèi),最終結(jié)果為 4193 。
示例 4:
 
輸入:s = "words and 987"
輸出:0
解釋?zhuān)?
第 1 步:"words and 987"(當(dāng)前沒(méi)有讀入字符,因?yàn)闆](méi)有前導(dǎo)空格)
         ^
第 2 步:"words and 987"(當(dāng)前沒(méi)有讀入字符,因?yàn)檫@里不存在 '-' 或者 '+')
         ^
第 3 步:"words and 987"(由于當(dāng)前字符 'w' 不是一個(gè)數(shù)字,所以讀入停止)
示例 5:

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

提示:

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

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

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

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

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

Math.PI 記錄的圓周率
Math.E 記錄e的常量
Math中還有一些類(lèi)似的常量,都是一些工程數(shù)學(xué)常用量。
Math.abs 求絕對(duì)值
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 求開(kāi)方
[color=red]Math.pow 求某數(shù)的任意次方, 拋出ArithmeticException處理溢出異常[/color]
Math.exp 求e的任意次方
Math.log10 以10為底的對(duì)數(shù)
Math.log 自然對(duì)數(shù)
Math.rint 求距離某數(shù)最近的整數(shù)(可能比某數(shù)大,也可能比它?。?
[color=red]Math.round 求距離某數(shù)最近的整數(shù),返回int型或者long型(上一個(gè)函數(shù)返回double型)[/color]
Math.random 返回0,1之間的一個(gè)隨機(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)然這是我自己的格式寫(xiě)的,沒(méi)有按官方的格式。來(lái)吧我們開(kāi)始逐一解釋?zhuān)?/p>

public static String myAtoi(String s) {
		//下面兩行就是之前講的將字符串變?yōu)樽址麛?shù)組
		char[] list=s.toCharArray();
		StringBuilder lis=new StringBuilder();
		//下面主要是以字符長(zhǎng)度為次數(shù)對(duì)字符進(jìn)行字符串轉(zhuǎn)換整數(shù)
		for(int i=0;i<list.length;i++) {
		//根據(jù)題目要求開(kāi)始碰到空格,丟棄無(wú)用的前導(dǎo)空格
			if(list[i]==' ') {
			//continue的功能我就不介紹了吧,夠基礎(chǔ)的了
				continue;
			}//下面這個(gè)判斷在下面詳細(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]);

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

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

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

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

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

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

相關(guān)文章

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

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

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

    spring-redis-session 自定義 key 和過(guò)期時(shí)間

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

    基于String不可變字符與StringBuilder可變字符的效率問(wèn)題

    這篇文章主要介紹了String不可變字符與StringBuilder可變字符的效率問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    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)的多種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Mybatis/Mybatis-Plus駝峰式命名映射的實(shí)現(xiàn)

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

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

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

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

    java開(kāi)發(fā)之Jdbc分頁(yè)源碼詳解

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

    Java ArrayAdapter用法案例詳解

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

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

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

最新評(píng)論