免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
用JAVA刷算法的常見(jiàn)問(wèn)題及解決之道 系列(一)

“工欲善其事,必先利其器”——題記

       最近用JAVA語(yǔ)言刷PAT 和leetcode上的算法題目,其間遇到了很多問(wèn)題,有些在我們做項(xiàng)目時(shí)不容易被發(fā)現(xiàn),但是在刷算法題目時(shí),一些bug往往出自其中且不易發(fā)現(xiàn)。選擇不當(dāng)時(shí)會(huì)很大程度上影響算法的時(shí)間復(fù)雜度。故而想總結(jié)一類這樣的篇目,以便于對(duì)日后的算法、代碼設(shè)計(jì)不斷優(yōu)化提高。

我們先從一些基本的談起:

一、關(guān)于字符串、字符的處理

String 轉(zhuǎn)char

1.將單個(gè)字符由char轉(zhuǎn)為String:

String s="acv";

char c=s.charAt(index);//此處index為你想轉(zhuǎn)的單個(gè)字符在字符串 s 中的下標(biāo)

2.將整個(gè)字符串轉(zhuǎn)為字符數(shù)組char [ ]:

String s="acv";

char c[ ]=s.toCharArray();

char轉(zhuǎn)為String

1.單個(gè)字符的轉(zhuǎn)換

法一:String s=String.valueOf('c');

法二:String s=Character.toString('c');

法三:String s="" 'c';

2.多個(gè)字符一次性轉(zhuǎn)為String字符串

如目前有一個(gè)字符數(shù)組   char c[ ]={'a', 'c', 'v'};

法一:String s=new String( c );

法二:String s=String.valueOf ( c );

int (或int [ ])和String的互轉(zhuǎn)

這里可以把int類型看作char 類型,和上述 char和String 的轉(zhuǎn)換一樣

二、用Scanner類獲取單個(gè)字符

java語(yǔ)言中沒(méi)有這個(gè)方法,但我們可以這樣操作:

三、String中關(guān)于next() 和nextLine() 的區(qū)別和用法:

1、String 中next() 查找并返回來(lái)自此掃描器的下一個(gè)完整標(biāo)記, 獲取一個(gè)字符串

在讀取內(nèi)容時(shí),會(huì)過(guò)濾掉有效字符前面的無(wú)效字符,對(duì)輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結(jié)束符,next()方法會(huì)自動(dòng)將其過(guò)濾掉。只有在讀取到有效字符之后,next()方法才將其后的空格鍵、Tab鍵或Enter鍵等視為結(jié)束符。所以next()方法不能得到帶空格的字符串。next()獲取第一個(gè)空格前數(shù)據(jù)。next()見(jiàn)到回車也會(huì)結(jié)束。

注意:next() 和 nextInt()、nextDouble()、nextFloat()等都是如上述一樣的用法

2.nextLine() 此掃描器執(zhí)行當(dāng)前行,并返回跳過(guò)的輸入信息,獲取一行數(shù),見(jiàn)到回車就結(jié)束,可獲得包含空格在內(nèi)的字符。

它的結(jié)束符只能是Enter鍵,即nextLine()方法返回的是Enter鍵之前沒(méi)有被讀取的所有字符,它是可以得到帶空格的字符串的。

3.兩者使用順序不一樣時(shí)會(huì)產(chǎn)生不同的效果:

(1)next() 在nextLine之前:

案例一:

 在輸入了 123后,我又輸入了空格和56,因此,k是12,s 是空格和56

案例二:

在輸入了123后,打了回車,這時(shí)會(huì)發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象:還為來(lái)得及輸入(即執(zhí)行第13行代碼:輸入一行字符串),便已經(jīng)打印出了結(jié)果。

其實(shí)是因?yàn)榇颂幍腟tring 類 s 獲取了123后面的回車符,并且因?yàn)閚extLine()見(jiàn)到回車結(jié)束,所以產(chǎn)生了以上的結(jié)果。

為解決這個(gè)問(wèn)題,我們可以這樣做:

只需在next()類的方法后加上一個(gè):String s=sc.nextLine(); 將回車符消耗掉,如下:

(2)nextLine ()  在前,next() 類在后是不會(huì)出現(xiàn)上述問(wèn)題的

(3)nextLine() 和 nextLine() 之間不會(huì)出現(xiàn)上述問(wèn)題

四、數(shù)字字符串轉(zhuǎn)為int、float、double等數(shù)字類型

1.轉(zhuǎn)int

String s="123";

int n=Integer.parseInt(s);

2.轉(zhuǎn)float

String s="1.23";

float n=Float.parseFloat(s);

3.轉(zhuǎn)double

double n=Double.parseDouble(s); 

五、StringBuilder、StringBuffer在算法中常用的方法

當(dāng)對(duì)字符串進(jìn)行修改時(shí),需要使用StringBuilder 和StringBuffer類。

這兩個(gè)類和String 不同之處在于,它們能夠被多次修改。

1.StringBuilder 類非線程安全,不可同步訪問(wèn)。但有速度又是,所以如果不考慮線程安全問(wèn)題,建議用StringBuilder

2.StringBuffer是線程安全的,但相對(duì)較慢。

3.StringBuilder 中常用方法:

(1)append(String s)或 append(char c) //進(jìn)行字符串的連接

(2)toString()  //返回一個(gè)與構(gòu)建器或者緩沖器內(nèi)容相同的字符串

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
字串定位
Java Scanner 類
408,劍指 Offer-替換空格
C#字符串的常用操作
徐葳【2019版最新】40小時(shí)掌握J(rèn)ava語(yǔ)言之06String類
C# 處理漢字、拼音、筆畫轉(zhuǎn)換 Microsoft Visual Studio International Pack 1.0
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服