在csdn上看到这道面试题,就拿过来简单练练手!
package temporary;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class SortWord {
/**
* 有一数组S[]={good,apple,fix,soft,food,god ...}
* 要求将这个数组按照首字母分成多个数组,使其成为{apple ...} {fix,food ...} {good,god ...}这种
* 且每一个数组内部都有序的?
* @param args
*/
public static void main(String[] args) {
String[] s = {"good","apple","fix","soft","food","god"};
System.out.println("单词数组为:\t" + Arrays.toString(s));
//先排序
Arrays.sort(s);
System.out.println("排序后为:\t" + Arrays.toString(s));
//再分组
Map<Character, List<String>> map = new LinkedHashMap<Character, List<String>>();
// //method1:
// for (int i = 0; i< s.length; i++) {
// map.put(s[i].charAt(0), new ArrayList<String>());
// }
// for (int i=0; i<s.length; i++) {
// String str = s[i];
// char c = str.charAt(0);
// map.get(c).add(str);
// }
//method 2:
for (int i=0; i<s.length; i++) {
String str = s[i];
char c = str.charAt(0);
if (map.containsKey(c)) {
map.get(c).add(str);
} else {
List<String> list = new ArrayList<>();
list.add(str);
map.put(c, list);
}
}
//输出
System.out.print("分组后为:\t");
for (Character c : map.keySet()) {
System.out.print(map.get(c) + " ");
}
}
}
【output】
单词数组为: [good, apple, fix, soft, food, god]
排序后为: [apple, fix, food, god, good, soft]
分组后为: [apple] [fix, food] [god, good] [soft]
分享到:
相关推荐
排序完成后,可以按照首字母将数据分成多个组,每组对应一个字母。这可以通过遍历排序后的数组,检查当前元素与前一个元素的首字母是否相同来实现。不同的话,就创建新的分组。 5. **动态渲染UI** 微信小程序中,...
5.6 编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中的数据的个数显示出来。 5.7 试编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它放在...
归并排序是基于分治策略的一种排序方法,首先将数组分解为较小的子数组,然后递归地排序这些子数组,最后将它们合并为一个有序数组。 #### 分配类排序 - **多关键字排序**:例如扑克牌排序,按照花色和数字排序。 ...
它将数组分成两半,分别排序,然后合并两个已排序的半数组。迭代和递归两种方式都能实现。 9. **快速排序**:快速排序采用“分区”策略,选取一个基准元素,将数组分为两部分,小于基准的放一边,大于的放另一边,...
这个数组被分成了26个部分,每个部分包含的汉字首字母相同,按照英文字母顺序排列。同时,`arrNumLetter`数组用于对应`arrInitialChart`中每个部分的首字母,而`arrPolyphone`数组则存储了377个多音字的首字母字符串...
从系统内部来讲,当一个Windows函数检测到一个错误时,它会使用一个称为线程本地存储器的机制,将相应的错误代码号码与调用的线程关联起来。(“线程本地存储器”将在第21章中介绍)。这将使线程能够互相独立地运行...
4、 请用C++结合链表编写一个简单的机票订票程序,要求完成以下功能: a. 允许出现多个班机; b. 创建一个班机链表,每个节点都包含指向一个乘客链表的指针; c. 该程序要有顾客购票,查询班机起飞降落...
- 类名首字母大写。 - 常量全大写,单词间用下划线隔开。 **三、数据类型** Java中的数据类型分为两大类: 1. **基本数据类型**:如`int`、`float`、`boolean`等。 2. **引用数据类型**:如`String`、`Array`、...
- 类名: 首字母大写,后续单词首字母也大写,如`MyClassName`。 - 方法名: 采用驼峰命名法,如`getMyMethod`。 - 变量名: 采用驼峰命名法,如`myVariable`。 - 常量名: 所有字母大写,单词间用下划线分割,如`MY...
0159 如何将字符串首字母大写 104 5.3 字符串的相关判断 105 0160 判断某一字符是否在字符串中 105 0161 判断字符串是由数字、大写字母或小写字母组成 105 0162 判断字符串中的某一字符是否大写 106 0163...
0159 如何将字符串首字母大写 104 5.3 字符串的相关判断 105 0160 判断某一字符是否在字符串中 105 0161 判断字符串是由数字、大写字母或小写字母组成 105 0162 判断字符串中的某一字符是否大写 106 0163...
8. 一个算法具有 5个特性: (1)有穷性 、 (2)确定性 、 (3)可行性 ,有零个或多个输入、有一个或多个输出。 《数据结构 1800题》 9.已知如下程序段 FOR i:= n DOWNTO 1 DO {语句 1} BEGIN x:=x+1;...
根据题目描述,“每个结点有且仅有一个直接前趋和多个(或无)直接后继”,这符合树状结构的特点。树状结构中,除了根节点外,每个节点都有一个父节点,并可以有任意数量的子节点。 - A. **树状结构**:正确。符合...
具体步骤为:将编号为1和2的圆盘移至B柱,然后将1号圆盘移回A柱,再将3号圆盘移至B柱,然后将2号圆盘移至C柱,再将1号圆盘移至B柱,再将4号圆盘移至B柱,然后将1号圆盘移至A柱,再将5号圆盘移至B柱,再将4号圆盘移至...
- 多个变量赋值时,考虑对齐变量名,以提高代码可读性。 - 示例: ```php $a = $b; $test = 1; $myGod = "我是神"; ``` 4. **换行** - 条件及函数段内的程序块,考虑首行多换一行,以方便阅读。 - 函数或...
选项中只有`short`和`char`是合法的关键字,但题目中`Char`首字母大写,因此不符合C语言规定。故正确答案为`short`。 2. **片内RAM的20H~2FH为位寻址区** - 正确答案:B、00H~7FH - 解析:在8051系列单片机中,...
图示窗口分成3部分:中间部分或显示客户流动情况的动画,或显示程序执行过程中事件表和4个队列的数值,上方两个按钮用以切换动画或静态数据,下方则显示客户总人数、客户逗留的累计时间以及调节动画中小人移动速度的...