第一題:
import java.util.Scanner;
/**
* 字符串反转
* 题目描述
* 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
* 输入描述:
* 输入N个字符
* 输出描述:
* 输出该字符串反转后的字符串
* 示例1
* 输入abcd
* 输出dcba
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
String str= scanner.nextLine();
//将字符串变成char数组再倒序输出
char[] chars= str.toCharArray();
for(int i=chars.length-1;i>=0;i--){
System.out.print(chars[i]);
}
System.out.println();
}
}
}
第二題:
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
/**
输入描述:
先输入键值对的个数
然后输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例1
1 2 3 4 5 6 7 8 9 10 |
输入 4 0 1 0 2 1 2 3 4 输出 0 3 1 2 3 4 |
*/
public static void main(String[] args) {
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Scanner sc = new Scanner(System.in); while (sc.hasNext()){ int next = sc.nextInt(); TreeMap<Integer,Integer> map = new TreeMap<>(); for (int i = 0; i < next; i++) { int key = sc.nextInt(); int value = sc.nextInt(); if (map.containsKey(key)){ map.put(key,map.get(key)+value); }else { map.put(key,value); } } for (Map.Entry<Integer, Integer> integerIntegerEntry : map.entrySet()) { System.out.println(integerIntegerEntry.getKey()+" "+integerIntegerEntry.getValue()); } } |
}
}
第三題:
题目是将一串英文句子反向显示。
题目分析:
针对以上两点分析。数据结构“双向链表”比较满足。将句子的每个单词依次放到双向链表头部,最后从链表头部依次遍历出单词即可达到句子反向的目的。
复制代码
1 2 3 4 5 6 7 8 9 10 11 12 |
public class ReverseWord {
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Deque<String> words = new LinkedList<>(); for (String word : scanner.nextLine().split("\\s+")) { words.addFirst(word); } System.out.println(String.join(" ", words)); }
} |
先进后出链表双向链表
第四題:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
String [] arr = new String[n];
for(int i=0;i<n;i++){
String str = sc.next();
arr[i] = str;
}
Arrays.sort(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
sc.close();
}
}