最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

每天練一練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
解釋:加粗的字符串為已經(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
解釋:
第 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)前沒(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
解釋:
第 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
解釋:
第 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)始逐一解釋:

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)文章

  • jenkins 構(gòu)建項(xiàng)目之 pipeline基礎(chǔ)教程

    jenkins 構(gòu)建項(xiàng)目之 pipeline基礎(chǔ)教程

    &#8203;pipeline ,簡(jiǎn)單來(lái)說(shuō),就是一套運(yùn)行在 jenkins 上的工作流框架。這篇文章主要介紹了jenkins 構(gòu)建項(xiàng)目之 pipeline基礎(chǔ)教程,需要的朋友可以參考下
    2020-07-07
  • Java利用反射如何查找使用指定注解的類(lèi)詳解

    Java利用反射如何查找使用指定注解的類(lèi)詳解

    這篇文章主要給大家介紹了關(guān)于Java利用反射如何查找使用指定注解的類(lèi)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • 在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件的方法

    在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件的方法

    在JAVA?Web項(xiàng)目中,我們經(jīng)常需要調(diào)用一些第三方庫(kù)或者實(shí)現(xiàn)一些JAVA本身不支持的功能,這時(shí),我們可能會(huì)考慮使用JNI來(lái)調(diào)用DLL或SO文件,然而,因此,本文將介紹如何在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件,需要的朋友可以參考下
    2024-12-12
  • MyBatis與SpringMVC相結(jié)合實(shí)現(xiàn)文件上傳、下載功能

    MyBatis與SpringMVC相結(jié)合實(shí)現(xiàn)文件上傳、下載功能

    這篇文章主要介紹了MyBatis與SpringMVC相結(jié)合實(shí)現(xiàn)文件上傳、下載功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Spring事務(wù)管理中關(guān)于數(shù)據(jù)庫(kù)連接池詳解

    Spring事務(wù)管理中關(guān)于數(shù)據(jù)庫(kù)連接池詳解

    事務(wù)的作用就是為了保證用戶的每一個(gè)操作都是可靠的,事務(wù)中的每一步操作都必須成功執(zhí)行,只要有發(fā)生異常就 回退到事務(wù)開(kāi)始未進(jìn)行操作的狀態(tài)。事務(wù)管理是Spring框架中最為常用的功能之一,我們?cè)谑褂肧pring Boot開(kāi)發(fā)應(yīng)用時(shí),大部分情況下也都需要使用事務(wù)
    2022-12-12
  • 詳解Java如何在CompletableFuture中實(shí)現(xiàn)日志記錄

    詳解Java如何在CompletableFuture中實(shí)現(xiàn)日志記錄

    這篇文章主要為大家詳細(xì)介紹了一種slf4j自帶的MDC類(lèi),來(lái)記錄完整的請(qǐng)求日志,和在CompletableFuture異步線程中如何保留鏈路id,需要的可以參考一下
    2023-04-04
  • SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解進(jìn)行參數(shù)校驗(yàn)

    SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解進(jìn)行參數(shù)校驗(yàn)

    我們經(jīng)常需要對(duì)請(qǐng)求參數(shù)進(jìn)行校驗(yàn),本文主要介紹了SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解進(jìn)行參數(shù)校驗(yàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案

    idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案

    這篇文章主要介紹了idea中MavenWeb項(xiàng)目不能創(chuàng)建Servlet的解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot中Zookeeper分布式鎖的原理和用法詳解

    SpringBoot中Zookeeper分布式鎖的原理和用法詳解

    Zookeeper是一個(gè)分布式協(xié)調(diào)服務(wù),它提供了高可用、高性能、可擴(kuò)展的分布式鎖機(jī)制,SpringBoot是一個(gè)基于Spring框架的開(kāi)發(fā)框架,它提供了對(duì)Zookeeper分布式鎖的集成支持,本文將介紹SpringBoot中的 Zookeeper分布式鎖的原理和使用方法,需要的朋友可以參考下
    2023-07-07
  • 解決springSecurity 使用默認(rèn)登陸界面登錄后無(wú)法跳轉(zhuǎn)問(wèn)題

    解決springSecurity 使用默認(rèn)登陸界面登錄后無(wú)法跳轉(zhuǎn)問(wèn)題

    這篇文章主要介紹了解決springSecurity 使用默認(rèn)登陸界面登錄后無(wú)法跳轉(zhuǎn)問(wèn)題,項(xiàng)目環(huán)境springboot下使用springSecurity 版本2.7.8,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-12-12

最新評(píng)論

海安县| 马公市| 南召县| 临江市| 旬阳县| 米林县| 融水| 礼泉县| 安徽省| 阿勒泰市| 徐闻县| 西峡县| 鸡西市| 巴林左旗| 教育| 安塞县| 黄龙县| 济源市| 松原市| 双流县| 明光市| 伊通| 庆安县| 呼伦贝尔市| 柳州市| 吴桥县| 玉龙| 武功县| 太仆寺旗| 芷江| 运城市| 百色市| 邢台县| 通城县| 富宁县| 孝昌县| 江安县| 句容市| 威海市| 米泉市| 浏阳市|