字符串根据字典值排序问题
来源:互联网 发布:数到五答应我网络歌手 编辑:程序博客网 时间:2024/05/16 08:37
字符串根据字典值排序问题,就是指对给定的字符串,按照首字母的字典值排序,如果首字母相同的字符串,则按照第二个字母,依次内推,比如说
{"dog","dear","eye","bed"},排序后应该是{"bed","dear","dog","eye"}
刚开始接触到这个问题时候,当时想着排序首先按照第一个字母,如果第一个字母相同的那些字符串,再归为一类,再按照第二个字母排序。。。依次类推。
所以不由自主想到了递归,这样问题就变得比较复杂。
后来仔细想了一下,在这个问题上,我开始时候思路就陷入了一个误区,不妨可以按照以下思路重新思考这个问题:
这个问题和普通的数字排序有什么本质区别?
普通的数字排序是根据数字的”大小“关系排序 ,那么这个问题呢?其实也是根据字符串的”大小“关系排序,只不过数字的大小关系可能比较简单,我们用一个比较运算符立马可以得到结果,而字符串之间的大小关系,稍微复杂了一点点,得将字符串中的字符拆开来,分别比较,直到比较出结果为止。
这样看来,其实这个排序和普通的排序的唯一区别就是:在比较”大小“的方法上,略有差异,其他逻辑居然完全一样。所以,我们依然可以用传统的排序方法,解决这个问题,唯一需要做的就是,重新写一个比较大小的方法即可。
{"dog","dear","eye","bed"},排序后应该是{"bed","dear","dog","eye"}
刚开始接触到这个问题时候,当时想着排序首先按照第一个字母,如果第一个字母相同的那些字符串,再归为一类,再按照第二个字母排序。。。依次类推。
所以不由自主想到了递归,这样问题就变得比较复杂。
后来仔细想了一下,在这个问题上,我开始时候思路就陷入了一个误区,不妨可以按照以下思路重新思考这个问题:
这个问题和普通的数字排序有什么本质区别?
普通的数字排序是根据数字的”大小“关系排序 ,那么这个问题呢?其实也是根据字符串的”大小“关系排序,只不过数字的大小关系可能比较简单,我们用一个比较运算符立马可以得到结果,而字符串之间的大小关系,稍微复杂了一点点,得将字符串中的字符拆开来,分别比较,直到比较出结果为止。
这样看来,其实这个排序和普通的排序的唯一区别就是:在比较”大小“的方法上,略有差异,其他逻辑居然完全一样。所以,我们依然可以用传统的排序方法,解决这个问题,唯一需要做的就是,重新写一个比较大小的方法即可。
下面是用最简单的”冒泡排序“实现的一段代码:
public class SortByDictionary {public static boolean bigger(String s1, String s2) {int length1 = s1.length();int length2 = s2.length();int i = 0;while (i < length1 && i < length2) {if (s1.charAt(i) > s2.charAt(i)) {return true;} else if (s1.charAt(i) < s2.charAt(i)) {return false;} else {i++;}}if (i == length1) {return false;} else {return true;}}public static void main(String[] args) {String[] s = { "dog", "dear", "eye", "bed", "do", "hello", "zero","fire", "hc", "zz" };for (int i = 0; i < s.length - 1; i++) {boolean change = false; // 用作冒泡排序的标记,如果一趟排序存在交换,则change设为true,说明还需要下一趟排序for (int j = 0; j < s.length - i - 1; j++) {if (bigger(s[j], s[j + 1])) {// swap(s[j], s[j + 1]);String tmp = s[j];s[j] = s[j + 1];s[j + 1] = tmp;change = true;}}if (!change) {break; // 当change为false的时候,说明不需要再冒泡了}}for (int i = 0; i < s.length; i++) {System.out.print(s[i] + " ");}}}
0 0
- 字符串根据字典值排序问题
- 字符串根据字典值排序
- 算法理解——字符串根据字典值排序
- map根据值排序,字典排序,读入带空格的字符串处理
- 根据字典的值大小对字典进行排序
- 编码与解码;字符串字典序问题;根据字符串找位序,根据位序找字符串;
- mysql查询根据字符串位置排序问题
- 字符串字典排序
- 字符串按字典排序
- 字符串按字典排序
- 字符串排序-字典顺序
- 数组根据数组中字典的value值排序
- 如何根据字典的键或值来排序
- 字典排序问题
- Python_字典排序问题
- 字典全排序问题
- 字典序排序问题
- 字典排序问题
- 1232畅通工程(并查集)
- CodeForces 688 A
- quick3.3模拟器的横屏
- 创建VBOX OSX系统
- PXC的HAProxy部署
- 字符串根据字典值排序问题
- python之赋值与拷贝
- mysql_初入江湖_03_crud
- 正则表达式
- 类的继承和接口的实现
- 【Android UI】ListView的使用和简单优化
- Struts源码分析1
- C语言中关键字auto、static、register、extern、volatile、restrict的作用
- Jquery 的spilce和grep