电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java實現單詞倒序輸出

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

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

看起來好像很簡單,只需要把字符串先分割成單詞,然后加入一個StringBuilder或者StringBuffer中,最后再使用toString方法即可,現在來實現一下:

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

China Hello Java Hello

好的,現在就完美的解決了問題。

但事實上,通常并不是全用空格分隔開來的,而是有逗號,句號,引號等,那么這該如何處理呢?

那就只能一個字符一個字符判斷了,用charAt()來判斷字符是否為逗號句號或者引號,空格,如果是的話就知道到了分隔點了,如果不是的話就加入一個臨時的StringBuilder對象,代碼如下:

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

輸出如下:

.China Hello,Java Hello

好像沒什么問題了。

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

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

我們先隨機生成一個字符串,然后再使用第二種方式進行處理:

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

輸出如下:

字符串長度:78888890608

608毫秒,速度還ok,生成字符串還是要花挺多時間的,因為一直要進行內存復制,如果在循環次數后再加一個0,就會內存不足了。。。。

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)

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

標簽: Java
相關文章:
主站蜘蛛池模板: 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 断桥铝破碎机_发动机破碎机_杂铝破碎机厂家价格-皓星机械 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 水轮机密封网 | 水轮机密封产品研发生产厂家 | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 冷镦机-多工位冷镦机-高速冷镦机厂家-温州金诺机械设备制造有限公司 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 除尘布袋_液体过滤袋_针刺毡滤料-杭州辉龙过滤技术有限公司 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 喷播机厂家_二手喷播机租赁_水泥浆洒布机-河南青山绿水机电设备有限公司 | 智能监控-安防监控-监控系统安装-弱电工程公司_成都万全电子 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 首页-浙江橙树网络技术有限公司| 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 计算机毕业设计源码网| 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 |