亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java實(shí)現(xiàn)單詞倒序輸出

瀏覽:22日期:2022-08-26 17:29:35

如何將一段單詞倒序輸出?把“Hello Java Hello China”變成“China Hello Java Hello”?

看起來(lái)好像很簡(jiǎn)單,只需要把字符串先分割成單詞,然后加入一個(gè)StringBuilder或者StringBuffer中,最后再使用toString方法即可,現(xiàn)在來(lái)實(shí)現(xiàn)一下:

/** * @author Frank * @create 2017/11/24 * @description */public class Test { public static void main(String[] args) { String src = 'http://www.aoyou183.cn/bcjs/Hello Java Hello China';//需要處理的字符串 String[] arr = src.split(' ');//按空格分割 int length = arr.length;//計(jì)算數(shù)組長(zhǎng)度 StringBuilder sb = new StringBuilder(src.length());//新建一個(gè)StringBuilder對(duì)象 for (int i=length-1;i>=1;i--){sb.append(arr[i]+' ');//將字符串依次加入StringBuilder中 } sb.append(arr[0]);//最后一個(gè)單詞不加空格 System.out.println(sb.toString());//輸出 }}

China Hello Java Hello

好的,現(xiàn)在就完美的解決了問(wèn)題。

但事實(shí)上,通常并不是全用空格分隔開(kāi)來(lái)的,而是有逗號(hào),句號(hào),引號(hào)等,那么這該如何處理呢?

那就只能一個(gè)字符一個(gè)字符判斷了,用charAt()來(lái)判斷字符是否為逗號(hào)句號(hào)或者引號(hào),空格,如果是的話(huà)就知道到了分隔點(diǎn)了,如果不是的話(huà)就加入一個(gè)臨時(shí)的StringBuilder對(duì)象,代碼如下:

/** * @author Frank * @create 2017/11/24 * @description */public class Test2 { public static void main(String[] args) { String src = 'http://www.aoyou183.cn/bcjs/Hello Java,Hello China.';//需要處理的字符串 StringBuilder tmp = new StringBuilder(20);//定義一個(gè)StringBuilder對(duì)象 StringBuilder goal = new StringBuilder(src.length());//定義一個(gè)StringBuilder對(duì)象來(lái)存放最終要輸出的信息 char c;//定義一個(gè)字符變量 for (int i=src.length()-1;i>=0;i--){ c = src.charAt(i);//從后往前取字符 if(c ==’ ’ || c == ’,’ || c == ’.’){//判斷是否為分隔字符goal.append(tmp);//如果是的話(huà)就把tmp加入到goal中來(lái)goal.append(c);//在把分隔字符也一起加入tmp.delete(0,tmp.length());//清空tmp }else {tmp.insert(0,c);//如果不是分隔字符,說(shuō)明單詞未完整,繼續(xù)加入tmp中 } } if (!tmp.equals('')){ goal.append(tmp);//如果tmp中還有內(nèi)容,在添加到goal中 } System.out.println(goal.toString());//輸出 }}

輸出如下:

.China Hello,Java Hello

好像沒(méi)什么問(wèn)題了。

現(xiàn)在難度進(jìn)一步升級(jí),如果有一個(gè)20M的字符串,“Hello_,_China_..._Bye.”(...代表中間省略的部分),單詞之間用空格隔開(kāi),現(xiàn)在需要把所有單詞全部顛倒順序,要求效率不能太低。不看這個(gè)20M的話(huà),好像沒(méi)什么難度,關(guān)鍵就在于這個(gè)20M,肯定不能像第一種方式用split分割,那樣的話(huà)會(huì)創(chuàng)建一個(gè)很大的字符串?dāng)?shù)組,浪費(fèi)很多空間。

所以這里采用第二種方式。

我們先隨機(jī)生成一個(gè)字符串,然后再使用第二種方式進(jìn)行處理:

/** * @author Frank * @create 2017/11/24 * @description */public class Test3 { public static void main(String[] args) { long time = 0; StringBuilder sb = new StringBuilder(); //先生成一個(gè)比較大的字符串 for (int i=0;i<10000000;i++){ sb.append(i+' '); } System.out.println('字符串長(zhǎng)度:'+sb.length()); //開(kāi)始計(jì)算時(shí)間 time = System.currentTimeMillis(); StringBuilder tmp = new StringBuilder(20);//定義一個(gè)StringBuilder對(duì)象存放臨時(shí)數(shù)據(jù) StringBuilder goal = new StringBuilder(sb.length());//定義一個(gè)StringBuilder對(duì)象來(lái)存放最終要輸出的信息 char c;//定義一個(gè)字符變量 for (int i=sb.length()-1;i>=0;i--){ c = sb.charAt(i);//從后往前取字符 if(c ==’ ’){//判斷是否為分隔字符goal.append(tmp);//如果是的話(huà)就把tmp加入到goal中來(lái)goal.append(c);//在把分隔字符也一起加入tmp.delete(0,tmp.length());//清空tmp }else {tmp.insert(0,c);//如果不是分隔字符,說(shuō)明單詞未完整,繼續(xù)加入tmp中 } } if (!tmp.equals('')){ goal.append(tmp);//如果tmp中還有內(nèi)容,在添加到goal中 } System.out.println(System.currentTimeMillis()-time);//輸出運(yùn)行時(shí)間 }}

輸出如下:

字符串長(zhǎng)度:78888890608

608毫秒,速度還ok,生成字符串還是要花挺多時(shí)間的,因?yàn)橐恢币M(jìn)行內(nèi)存復(fù)制,如果在循環(huán)次數(shù)后再加一個(gè)0,就會(huì)內(nèi)存不足了。。。。

Exception in thread 'main' java.lang.OutOfMemoryError: Java heap spaceat java.util.Arrays.copyOf(Arrays.java:3332)at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)at java.lang.StringBuilder.append(StringBuilder.java:136)at com.frank.string.test1.Test3.main(Test3.java:14)

至此,本篇問(wèn)題討論完畢,如果有更好更快的方法,歡迎留言交流討論。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 日本一级成人毛片免费观看 | 偷亚洲偷国产欧美高清 | 老外一级黄色片 | 黑人与欧洲性大战 | 亚洲国产精品成人综合色在线婷婷 | 成人夜色香网站在线观看 | 成人在线精品视频 | 一级毛片直接看 | 亚洲精品国产第一区二区小说 | 特级毛片8级毛片免费观看 特级毛片aaaaaa蜜桃 | 亚洲国产美女精品久久 | 女人被狂躁的免费视频高清 | 欧美日韩 国产区 在线观看 | 性感美女在线喷水 | 国产精品乱码在线观看 | 午夜性刺激免费视频观看不卡专区 | 男生j桶进女人p又色又爽又黄 | 97精品国产| 国产精品毛片无码 | 亚洲成a人片在线观看www流畅 | 免费观看黄色网址 | 亚洲日韩中文字幕在线播放 | 麻豆精品永久免费视频 | 综合在线视频 | 国产精品福利视频主播真会玩 | 国产伦子一区二区三区四区 | 美女污污视频在线观看 | 国产成人麻豆tv在线观看 | 午夜刺激视频 | 日韩 综合 | 麻豆视频免费 | 麻豆影视大全 | 香蕉高清免费永久在线视频 | 欧美日韩在线观看一区二区 | 美国一级毛片∞ | 综合图色 | 毛片a级毛片免费播放100 | 国产午夜免费视频片夜色 | 国产精品免费网站 | 午夜水蜜桃视频在线观看 | 成人a免费视频播放 |