字符串根据字典值排序问题
字符串根据字典值排序问题,就是指对给定的字符串,按照首字母的字典值排序,如果首字母相同的字符串,则按照第二个字母,依次内推,比如说
{"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] + " ");}}}
字符串根据字典值排序问题相关推荐
- iOS开发JSON字符串和字典互转
1.相关属性简述 NSJSONReadingOptions读取属性: typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) {NSJSONReadi ...
- python字典相同key的值怎么分别取出_python字典值排序并取出前n个key值的方法
python字典值排序并取出前n个key值的方法 今天在写一个算法的过程中,得到了一个类似下面的字典: {'user1':0.456,'user2':0.999,'user3':0.789,user: ...
- python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- python把字符串放到列表_python中for循环把字符串或者字典添加到列表的方法
python中如何for循环把字符串添加到列表? 实例: 1.单个字符串用for循环添加到列表中: # 把L1中的字符串添加到列表alist里面 L1 = 'MJlifeBlog' alist = [ ...
- python字符串转字典并获取多层嵌套字典元素
首先定义一个符合json格式字符串,即字符串首尾由{}符号包裹,内部为key:value键值对组合.如果是嵌套字典,在value内部继续使用{}符号包裹,一个三层嵌套字典的形式:{key:[{key: ...
- json和python中字典的区别和联系_Python中 json字符串和字典的区别
一.前言 工作或学习中,相信很多同学跟我一样,对于json字符串和字典两者的概念一直摸棱两可.emmm,既然不懂,那我们查资料并整理下来. 二.json字符串和字典的区别 简单粗暴地说,字典是一种数据 ...
- python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。
注意:本篇所讲的文件操作,都是对后缀为.txt..json文件进行的操作. 1.json其实就是一个文件的格式,像.txt一样,json也是一个纯文本文件.与.txt不同的是,json常用来存放有键值 ...
- 2021-12-19 老杨博客推荐\TCP像串口的多程编写的一个弱鸡版本类MQTT的TCP实现\字典值查键\微PYTHON与PYTHON的JSON区别\以及一个ESP32领导多个ESP8266组网模式
都说程序员最拿手的好戏是复制粘贴,对于这件事我也是深以为然,遇到问题先看看别人,有么有写好的,没有写好的看看类似的,实在不行继续百度群里问问,最后再自己操刀上吧,microPython作为小众的控制器 ...
- python开发学习-day01 (python安装与版本、字符串、字典、运算符、文件)
pytho自动化开发 day01 Date:2015.12.26 作者注: python学习旅程正式开启,这一天将是一个新的开始.希望我们在python开发的道路上多多积累.多分享! 一.python ...
最新文章
- 计算机设备布局图,针对不同设备类型创建仪表板布局
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 4 Face Recognition for the Happy House
- 分布式事务原理及实战seata(转自微信公众号 终码一生 )
- boost::contract模块实现sqrt的测试程序
- 感受来自AI的幸福:可可豆、巧克力与人工智能
- python深度学习第三讲——用python写神经网络梯度下降(手写字符识别mnist)
- DataGradView操作之,列头右键菜单隐藏和显示字段功能
- Android JTT808协议通讯
- ASP.NET 新闻发布网站
- CRM —— 1、搭建开发环境
- NC-Verilog仿真
- python美元和人民币双向兑换程序_Python:程序练习题(二)
- vue:高德地图的使用
- mysql的check出错_如何利用myisamchk和mysqlcheck快速修复损坏的MySQL数据库
- SSH登录的两种方式
- java02win7x64_Win 7 64位下jdk(java)1.8.X(64位)的经验
- 零基础教程-如何快速将EXCEL表格数据拆分成多个文件
- 例题8-6 两性亲分子 UVa 1606
- JAVA:获取用户访问ip地址
- 二进制文件、文本文件
热门文章
- 渲染管道(1)整体流程
- 区块链BaaS云服务(36)欧盟EBSI“使用场景”
- 数学建模——ARIMA时间序列预测模型Python代码
- optee3.16.0 qemu_v8的环境搭建篇(ubuntu20.10)
- 01_SMC_Calling_Convention(SMCCC)
- TLS调试检测和反调试
- 重点解读《数据安全法》,做数据安全相关工作的必看
- 解决matplotlib中文乱码问题
- MySQL主键(PRIMARY KEY)
- 使用 CallableStatement 接口调用存储过程