zoukankan      html  css  js  c++  java
  • 牛客网——华为机试(题26:字符串排序)(Java)

    题目描述:

    编写一个程序,将输入字符串中的字符按如下规则排序。

    规则 1 :英文字母从 A 到 Z 排列,不区分大小写。

           如,输入: Type   输出: epTy

    规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。

         如,输入: BabA   输出: aABb

    规则 3 :非英文字母的其它字符保持原来的位置。

         如,输入: By?e   输出: Be?y

    样例:

        输入:

       A Famous Saying: Much Ado About Nothing(2012/8).

        输出:

       A  aaAAbc   dFgghh :  iimM   nNn   oooos   Sttuuuy (2012/8).

    输入描述:

    输出描述:

    示例1:

    输入:

    A Famous Saying: Much Ado About Nothing (2012/8).

    输出:

    A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

    代码: 

    import java.util.Scanner;
    
    public class Main {
    	public static void main ( String[] args ) {
    		Scanner in = new Scanner( System.in );
    		
    		while( in.hasNextLine() ) {
    		
    		String s = in.nextLine();
    		String str[] = new String[ s.length( ) ]; 
    		String sortStr[] = new String[ s.length( ) ];
    		
    		int j = 0;
    		for ( int i = 0 ; i < s.length() ; i++ ) {
    			if ( ( s.charAt( i ) >= 65 && s.charAt( i ) <= 90 ) || ( s.charAt( i ) >= 97 && s.charAt( i ) <= 122 ) ) {
    				str[ j ] = String.valueOf( s.charAt( i ) );
    				j++;
    			}
    		}
    		
    		String str1[] = new String[ j ];
    		for ( int i = 0 ; i < j ; i++ ) {
    			str1[ i ] = str[ i ];
    		}
    		sort( str1 );
    		
    		for ( int i = 0 ; i < s.length(); i++ ) {
    			if ( !( ( s.charAt( i ) >= 65 && s.charAt( i ) <= 90 ) || ( s.charAt( i ) >= 97 && s.charAt( i ) <= 122 ) ) ) {
    				sortStr[ i ] = String.valueOf( s.charAt( i ) );
    			}
    		}
    		
    		int k = 0;
    		for( int i = 0 ; i < str1.length && k < s.length() ; k++ ) {
    			if ( sortStr[ k ] == null ) {
    				sortStr[ k ] = str1[ i ];
    				i++;
    			}
    		}
    		
    		for ( String e : sortStr ) {
    			System.out.print( e );
    		}
    		
    		System.out.println( );
    		
    		}
    		in.close();
    	}
    	
    	static void sort( String[] str ) {
    		int j;
    		for ( int i = 1 ; i < str.length ; i++ ) {
    			String temp = str[ i ];
    			for ( j = i ; j > 0 && sortAa( temp.charAt( 0 ) ) < sortAa( str[ j - 1 ].charAt( 0 ) ) ; j-- ) {
    				str[ j ] = str[ j - 1 ];
    			}
    			str[ j ] = temp;
    		}
    	}
    	
    	static int sortAa( Character c ) {
    		if ( c >= 65 && c <= 90 ) {
    			return c + 32;
    		}
    		else {
    			return c;
    		}
    	}
    }
    
    
  • 相关阅读:
    md5编码的两个程序
    DotNetNuke 5 User's Guide Get Your Website Up and Running读书摘录3
    纪念今天DNN密码破解
    DotNetNuke 5 User's Guide Get Your Website Up and Running读书摘录4
    文件与目录的默认权限与隐藏权限(转)
    EXT2 文件系统
    磁盘与目录的容量(转)
    文件的搜寻(转)
    权限与命令间的关系(转)
    账户切换(转)
  • 原文地址:https://www.cnblogs.com/cg-bestwishes/p/10681155.html
Copyright © 2011-2022 走看看