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

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

 更新時間:2021年08月18日 14:09:56   作者:肥學(xué)  
這篇文章主要介紹了Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(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é)果為正。
讀入下一個字符,直到到達下一個非數(shù)字字符或到達輸入的結(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)前沒有讀入字符,因為沒有前導(dǎo)空格)
         ^
第 2 步:"42"(當(dāng)前沒有讀入字符,因為這里不存在 '-' 或者 '+')
         ^
第 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)前沒有讀入字符,因為沒有前導(dǎo)空格)
         ^
第 2 步:"4193 with words"(當(dāng)前沒有讀入字符,因為這里不存在 '-' 或者 '+')
         ^
第 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)前沒有讀入字符,因為沒有前導(dǎo)空格)
         ^
第 2 步:"words and 987"(當(dāng)前沒有讀入字符,因為這里不存在 '-' 或者 '+')
         ^
第 3 步:"words and 987"(由于當(dāng)前字符 'w' 不是一個數(shù)字,所以讀入停止)
示例 5:

輸入:s = "-91283472332"
輸出:-2147483648
解釋:
第 1 步:"-91283472332"(當(dāng)前沒有讀入字符,因為沒有前導(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

一點點思路

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

開干
常規(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之間的一個隨機數(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ù)對字符進行字符串轉(zhuǎn)換整數(shù)
		for(int i=0;i<list.length;i++) {
		//根據(jù)題目要求開始碰到空格,丟棄無用的前導(dǎo)空格
			if(list[i]==' ') {
			//continue的功能我就不介紹了吧,夠基礎(chǔ)的了
				continue;
			}//下面這個判斷在下面詳細介紹
			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()就是計算ascll值的函數(shù),只要在0-9之間的數(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) {
//這里面涉及了三目運算不過我們之前就講過法則,這里的主要功能是防止下面這種情況返回為一個空字符,我們就把它至為零
  long a=Integer.parseInt(myAtoi("words and 987")==""? "0":myAtoi("words and 987"));
  //就是上面說的Math函數(shù)的主要用法,因為答案要判斷范圍
  //所以我們先讓我們求出來的數(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é)會了嗎?總的來說這道題對我們前面幾道題進行了回憶,如果你沒想起來建議去看看。學(xué)過的不能忘了。

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

相關(guān)文章

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

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

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

    Java利用反射如何查找使用指定注解的類詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

榕江县| 通河县| 黄骅市| 大冶市| 汉源县| 安庆市| 龙泉市| 宁晋县| 大兴区| 永修县| 和龙市| 密云县| 新闻| 邛崃市| 新竹市| 清丰县| 城固县| 青州市| 赣州市| 新昌县| 冷水江市| 沁水县| 突泉县| 淮北市| 奎屯市| 阿拉善盟| 张北县| 青龙| 贵南县| 永德县| 揭阳市| 许昌县| 富蕴县| 平湖市| 教育| 驻马店市| 游戏| 南靖县| 涞源县| 蚌埠市| 炉霍县|