zoukankan      html  css  js  c++  java
  • 乱序的字符串改成有序的字符串

    算法一:

    思路:每次都在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);
    	}
    
    }

    算法二:

    思路:将要排序的字符分次拆分放到多个list里面,然后将里面的list填满到字符串的长度,然后,循环取各个list里面的值,拿出来做拼接

    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);
    	}
    
    }
  • 相关阅读:
    haoop 断电后导致block文件损坏
    笔记本上小固态硬盘的使用
    centos 7安装部署docker
    用msbuild构建应用
    清风注解-Swift程序设计语言:Point11~15
    清风注解-Swift程序设计语言:Point6~10
    清风注解-Swift程序设计语言
    享骑电单车投诉
    yaf不输出致命错误(Fatal error)的原因(之一)
    如何面试 PHP 工程师?
  • 原文地址:https://www.cnblogs.com/JAYIT/p/6956060.html
Copyright © 2011-2022 走看看