字符串根据字典值排序问题,就是指对给定的字符串,按照首字母的字典值排序,如果首字母相同的字符串,则按照第二个字母,依次内推,比如说
{"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] + " ");}}}

字符串根据字典值排序问题相关推荐

  1. iOS开发JSON字符串和字典互转

    1.相关属性简述 NSJSONReadingOptions读取属性: typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) {NSJSONReadi ...

  2. python字典相同key的值怎么分别取出_python字典值排序并取出前n个key值的方法

    python字典值排序并取出前n个key值的方法 今天在写一个算法的过程中,得到了一个类似下面的字典: {'user1':0.456,'user2':0.999,'user3':0.789,user: ...

  3. python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  4. python把字符串放到列表_python中for循环把字符串或者字典添加到列表的方法

    python中如何for循环把字符串添加到列表? 实例: 1.单个字符串用for循环添加到列表中: # 把L1中的字符串添加到列表alist里面 L1 = 'MJlifeBlog' alist = [ ...

  5. python字符串转字典并获取多层嵌套字典元素

    首先定义一个符合json格式字符串,即字符串首尾由{}符号包裹,内部为key:value键值对组合.如果是嵌套字典,在value内部继续使用{}符号包裹,一个三层嵌套字典的形式:{key:[{key: ...

  6. json和python中字典的区别和联系_Python中 json字符串和字典的区别

    一.前言 工作或学习中,相信很多同学跟我一样,对于json字符串和字典两者的概念一直摸棱两可.emmm,既然不懂,那我们查资料并整理下来. 二.json字符串和字典的区别 简单粗暴地说,字典是一种数据 ...

  7. python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。

    注意:本篇所讲的文件操作,都是对后缀为.txt..json文件进行的操作. 1.json其实就是一个文件的格式,像.txt一样,json也是一个纯文本文件.与.txt不同的是,json常用来存放有键值 ...

  8. 2021-12-19 老杨博客推荐\TCP像串口的多程编写的一个弱鸡版本类MQTT的TCP实现\字典值查键\微PYTHON与PYTHON的JSON区别\以及一个ESP32领导多个ESP8266组网模式

    都说程序员最拿手的好戏是复制粘贴,对于这件事我也是深以为然,遇到问题先看看别人,有么有写好的,没有写好的看看类似的,实在不行继续百度群里问问,最后再自己操刀上吧,microPython作为小众的控制器 ...

  9. python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)

    pytho自动化开发 day01 Date:2015.12.26 作者注: python学习旅程正式开启,这一天将是一个新的开始.希望我们在python开发的道路上多多积累.多分享! 一.python ...

最新文章

  1. 计算机设备布局图,针对不同设备类型创建仪表板布局
  2. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 4 Face Recognition for the Happy House
  3. 分布式事务原理及实战seata(转自微信公众号 终码一生 )
  4. boost::contract模块实现sqrt的测试程序
  5. 感受来自AI的幸福:可可豆、巧克力与人工智能
  6. python深度学习第三讲——用python写神经网络梯度下降(手写字符识别mnist)
  7. DataGradView操作之,列头右键菜单隐藏和显示字段功能
  8. Android JTT808协议通讯
  9. ASP.NET 新闻发布网站
  10. CRM —— 1、搭建开发环境
  11. NC-Verilog仿真
  12. python美元和人民币双向兑换程序_Python:程序练习题(二)
  13. vue:高德地图的使用
  14. mysql的check出错_如何利用myisamchk和mysqlcheck快速修复损坏的MySQL数据库
  15. SSH登录的两种方式
  16. java02win7x64_Win 7 64位下jdk(java)1.8.X(64位)的经验
  17. 零基础教程-如何快速将EXCEL表格数据拆分成多个文件
  18. 例题8-6 两性亲分子 UVa 1606
  19. JAVA:获取用户访问ip地址
  20. 二进制文件、文本文件

热门文章

  1. 渲染管道(1)整体流程
  2. 区块链BaaS云服务(36)欧盟EBSI“使用场景”
  3. 数学建模——ARIMA时间序列预测模型Python代码
  4. optee3.16.0 qemu_v8的环境搭建篇(ubuntu20.10)
  5. 01_SMC_Calling_Convention(SMCCC)
  6. TLS调试检测和反调试
  7. 重点解读《数据安全法》,做数据安全相关工作的必看
  8. 解决matplotlib中文乱码问题
  9. MySQL主键(PRIMARY KEY)
  10. 使用 CallableStatement 接口调用存储过程