华为OJ:分段排序

题目有点绕,一个是要二分,用三个字符串,存前,中,后三个,前,后部分都降序排序,然后后半部分再反转一下,讲三部分合起来就好了。

import java.util.Scanner;
public class dividesort {
	public static void sort(StringBuffer s){
		for(int i=0;i<s.length();i++){
			for(int j=i;j<s.length();j++){
				if(s.charAt(i)>s.charAt(j)){
					char tmp=s.charAt(i);
					s.setCharAt(i,s.charAt(j));
					s.setCharAt(j, tmp);
				}
			}
		}
	}
	public static void main(String args[]){
		Scanner in=new Scanner(System.in);
		String s=new String(in.nextLine());
		StringBuffer s1=new StringBuffer(s.substring(0, s.length()/2));
		StringBuffer s2=new StringBuffer();
		StringBuffer s3=new StringBuffer();
		if(s.length()%2==0){
		s2.append(s.substring(s.length()/2,s.length()));
		}
		else{
		s2.append(s.substring((s.length()+1)/2, s.length()));
		s3.append(s.substring(s.length()/2,(s.length()+1)/2));
		}
		sort(s1);
		sort(s2);
		s2.reverse();
		StringBuffer res=new StringBuffer(s1.append(s3.append(s2)));

		System.out.println(res);
}
}

华为OJ:分段排序,布布扣,bubuko.com

时间: 2024-12-12 15:54:49

华为OJ:分段排序的相关文章

华为OJ—字符串排序

http://career-oj.huawei.com/exam/ShowProblemInfo?id=2168 编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区分大小写. 如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列. 如,输入:BabA 输出:aABb 规则3:非英文字母的其它字符保持原来的位置. 如,输入:By?e 输出:Be?y 样例: 输入: A Famous Saying: Much Ado Ab

华为OJ 字符串排序

写完之后,总觉得有点复杂.. 要求: 编写一个程序,将输入字符串中的字符按如下规则排序. 规则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:

华为OJ—火车进站(栈,字典排序)

给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号.要求以字典序排序输出火车出站的序列号.其实也就是输出所有可能的出栈序列. 样例输入: 3 1 2 3 样例输出: 1 2 31 3 22 1 32 3 13 2 1 解答: 其实核心就是一个栈,对于第K个数,在第K个数进栈之前,前面的 K-1 个数要么全部出去了,要么都在栈里面,要么部分在栈里面部分出去了.那么可以假想,在第K个数入栈之前,依次从栈里面出去 0个.1个.2个--栈.si

【华为OJ】【024-字符串排序】

[华为OJ][算法总篇章] [华为OJ][024-字符串排序] [工程下载] 题目描述 编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区分大小写.如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列.如,输入:BabA 输出:aABb 规则3:非英文字母的其它字符保持原来的位置.如,输入:By?e 输出:Be?y 样例: 输入: A Famous Saying: Much Ado About Nothing(2012

【华为OJ】【046-成绩排序】

[华为OJ][算法总篇章] [华为OJ][046-成绩排序] [工程下载] 题目描述 查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理. 例示: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 从低到高 smith 67 Tom 70 jack 70 peter 96 输入描述 输入多行,先输入要排序的人的个数,然后分别输入

【华为OJ】【091-数据分类处理】

[华为OJ][算法总篇章] [华为OJ][091-数据分类处理] [工程下载] 题目描述 信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码.QQ用户.手机号码.银行帐号等信息及活动记录. 采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出. 输入描述: ?一组输入整数序列I和一组规则整数序列R,I和R序列的第一个整数为序列的个数(个数不包含第一个整数):整数范围为0~0xFFFFFFFF,序列个数不限 输出描述: ?从R依次中取出R<i>,对I进行处理,找到满足条件

华为OJ题目

题目描述: 新入职华为的小伙伴们都有在oj上面刷题的任务,共需要刷100道初级题,45道中级题,5道高级题,其中,做出来的高级题如果超标可以当初级或者中级题,做出来的中级题如果超标可以当初级题.每天,出题的大哥会给大家出Xi道题,这Xi道题属于同一个难度级别,小伙伴们要么用一天时间把这些题全做出来,要么就不做.现在,给你每天出题大哥出的题数以及难度,请问,小伙伴们最少要挑选其中几天去做题,才能把这150道题的任务完成呢? 输入示例: 5 100 70 5 5 55 1 2 2 2 3 输出: 2

【华为OJ】【072-火车进站】

[华为OJ][算法总篇章] [华为OJ][072-火车进站] [工程下载] 题目描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车, 每辆火车以数字1-9编号.要求以字典序排序输出火车出站的序列号 思路: 此处所谓字典序排序的意思是这n辆火车有多少种出站的可能顺序(也就是数据结构中的栈有多少种出栈顺序). 思路为用三个变量分别存储待进站火车,站中火车和已出站火车,其中待进站火车用Queue(队列)存储和站中 火车采用stack(栈)存储,已出站火车采用St

【华为OJ】【033-名字的漂亮度】

[华为OJ][算法总篇章] [华为OJ][033-名字的漂亮度] [工程下载] 题目描述 给出一个名字,该名字有26个字符串组成,定义这个字符串的"漂亮度"是其所有字母"漂亮度"的总和. 每个字母都有一个"漂亮度",范围在1到26之间.没有任何两个字母拥有相同的"漂亮度".字母忽略大小写. 给出多个名字,计算每个名字最大可能的"漂亮度". 输入描述 整数N,后续N个名字 N个字符串,每个表示一个名字 输出描