首页 > 代码库 > 乱序的字符串改成有序的字符串

乱序的字符串改成有序的字符串

算法一:

思路:每次都在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里面的值,拿出来做拼接

乱序的字符串改成有序的字符串