首页 > 代码库 > 乱序的字符串改成有序的字符串
乱序的字符串改成有序的字符串
算法一:
思路:每次都在list找字符首次出现的位置,拿出来然后将当前位置置为空,然后循环拼接后的字符串
package test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class CEO { public static void ceo(String str){ String[] arr = str.split(""); List<String> l = Arrays.asList(arr); List<String> tmp = new ArrayList<String>(); while(true) { int C = l.indexOf("C"); int E = l.indexOf("E"); int O = l.indexOf("O"); if(C == -1 && E== -1 && O== -1) { tmp.addAll(l); break; }else { if(C!=-1){ tmp.add("C"); l.set(C, ""); } if(E!=-1){ tmp.add("E"); l.set(E, ""); } if(O!=-1){ tmp.add("O"); l.set(O, ""); } } } StringBuffer sb = new StringBuffer(); for(String t : tmp) { if(!"".equals(t)) { sb.append(t); } } System.out.println(sb.toString()); System.out.println(sb.toString().length()); } public static void main(String[] args) { String str="CEOOEECEEOCEECOOOEEEE"; ceo(str); }}
算法二:
package test;import java.util.ArrayList;import java.util.List;public class CEO1 { public static void ceo(String str){ List<String> list1=new ArrayList<String>(); List<String> list2=new ArrayList<String>(); List<String> list3=new ArrayList<String>(); String m1="C"; String m2="E"; String m3="O"; for(int i=0;i<str.length();i++){ if(m1.equals(str.charAt(i)+"")){ list1.add("C"); }else if(m2.equals(str.charAt(i)+"")){ list2.add("E"); }else if(m3.equals(str.charAt(i)+"")){ list3.add("O"); } } StringBuilder m=new StringBuilder(""); for(String s1:list1){ m.append(s1); } for(String s2:list2){ m.append(s2); } for(String s3:list3){ m.append(s3); } System.out.println("排序前:"+m); for(int i=0;i<str.length();i++){ if(i>=list1.size()){ list1.add(""); } if(i>=list2.size()){ list2.add(""); } if(i>=list3.size()){ list3.add(""); } } System.out.print("排序后:"); for(int i=0;i<str.length();i++){ System.out.print(list1.get(i)+list2.get(i)+list3.get(i)); } } public static void main(String[] args) { String str="CCEEEOOO"; String str1="CEOOEECEEOCEECOOOEEEE"; ceo(str1); }}
将要排序的字符分次拆分放到多个list里面,然后将里面的list填满到字符串的长度,然后,循环取各个list里面的值,拿出来做拼接
乱序的字符串改成有序的字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。