题目地址:http://ac.jobdu.com/problem.php?pid=1419
题目描述:
现在你的导师给你了一个待排序的参考文献列表,要你排好序给他。
文献列表中每一条文献记录只占一行。排序的规则和string类型字符串的比较规则一致(在排序时如果该字符串中包含大写字母,则当作小写字母处理,保证没有相同大小的字符串,但是输出结果不能改变任一字符串),按升序排列。
输入:输入包括多组,每组输入第一行包括一个整数n,(1<=n<=200),接下来有n行,每行包括一行文献记录,文献记录的长度s(1<=s<=200)。
输出:对每组输入。输出排好序的文献记录。
样例输入:
3
abc hello!
Abc hellz!
bbc hello!
样例输出:
abc hello!
Abc hellz!
bbc hello!
字符串比较,转为小写。然后打印输出。
C++ AC
#include <stdio.h>
#include <string.h>
#include <string>
#include<algorithm>
using namespace std;
const int maxn = 102;
const int maxm = 202;
int n,i;
struct Node{
char allStr[maxm];
}nodes[maxn];
void toLowCase(char s[]){
int len = strlen(s);
for(i = 0 ; i < len ; i++){
if(s[i] >= 'A' && s[i] <= 'Z'){
s[i] = s[i] - 'A' + 'a';
}
}
}
bool cmp(Node node1, Node node2){
toLowCase(node1.allStr);
toLowCase(node2.allStr);
return strcmp(node1.allStr,node2.allStr) < 0;
}
int main(){
while(scanf("%d",&n)!=EOF)
{
gets(nodes[0].allStr);
for(i = 0;i < n; i++){
gets(nodes[i].allStr);
}
sort(nodes,nodes+n,cmp);
for(i = 0;i < n; i++){
puts(nodes[i].allStr);
}
}
return 0;
}
/**************************************************************
Problem: 1419
User: wangzhenqing
Language: C++
Result: Accepted
Time:90 ms
Memory:1044 kb
****************************************************************/
Java AC
import java.util.Arrays;
import java.util.Scanner;
public class Main {
/*
* 1419
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
int N = Integer.parseInt(scanner.nextLine());
SortString array[] = new SortString[N];
for (int i = 0; i < N; i++) {
String ab = scanner.nextLine();
SortString sortStr = new SortString(ab.toLowerCase(), ab);
array[i] = sortStr;
}
Arrays.sort(array);
for (int i = 0; i < N; i++) {
System.out.println(array[i].getAllMsg());
}
}
}
static class SortString implements Comparable<SortString>{
private String firStr;
private String allMsg;
public String getFirStr() {
return firStr;
}
public void setFirStr(String firStr) {
this.firStr = firStr;
}
public String getAllMsg() {
return allMsg;
}
public void setAllMsg(String allMsg) {
this.allMsg = allMsg;
}
public SortString(String firStr, String allMsg) {
super();
this.firStr = firStr;
this.allMsg = allMsg;
}
public int compareTo(SortString o) {
return this.getFirStr().compareTo(o.getFirStr());
}
}
}
/**************************************************************
Problem: 1419
User: wzqwsrf
Language: Java
Result: Accepted
Time:1450 ms
Memory:30228 kb
****************************************************************/