算法--排序--大小写字母数字分离(桶排序思想)

题目: 对D,a,F,B,c,A,z这个字符串进行排序,要求将其中所有小写字母都排在大写字母的前面,但小写字母内部和大写字母内部不要求有序。比如经过排序之后为a,c,z,D,F,B,A,这个如何来实现呢?如果字符串中存储的不仅有大小写字母,还有数字。要将小写字母的放到前面,大写字母放在中间,数字放在最后,不用排序算法,又该怎么解决呢?

思路:

  1. 先扫描一遍数组,计算3种类型的元素个数,计算出每个类型的起始下标
  2. 扫描一遍,分别写入该去的 “桶” ,再写回原数组,O(n)复杂度

桶排序参考:https://blog.csdn.net/qq_21201267/article/details/80993672#t10

/*** @description: 分离开大小写字符,但不改变相对顺序(桶排序思想)* @author: michael ming* @date: 2019/4/13 18:25* @modified by: */
#include <iostream>
#include <time.h>
using namespace std;
void randomABCandNum(char *ch, size_t N)    //生成随机大小字母和数字
{char tempch[26+26+10];int i, j, k, randIndex;for(i = 0; i < 26; )tempch[i++] = 'A' + i;for(j=0; j < 26; j++)tempch[i++] = 'a' + j;for(k=0; k < 10; k++)tempch[i++] = '0' + k;srand((unsigned)time(NULL));for(int x = 0; x < N; ++x){randIndex = rand()%62;ch[x] = tempch[randIndex];cout << ch[x] << " ";}cout << endl;
}
void countseparate(char *ch, size_t N)
{size_t lowerNum = 0, upNum = 0, digitNum = 0;for(int i = 0; i < N; ++i)  //计数,看每种类型有多少个{if(ch[i] >= 'a' && ch[i] <= 'z')lowerNum++;else if(ch[i] >= 'A' && ch[i] <= 'Z')upNum++;elsedigitNum++;}size_t lowerIndex = 0, upIndex = lowerNum, digitIndex = lowerNum+upNum;//每种类型的起始下标int *temp = new int [N];for(int i = 0; i < N; ++i)  //按区间写入{if(ch[i] >= 'a' && ch[i] <= 'z')temp[lowerIndex++] = ch[i];else if(ch[i] >= 'A' && ch[i] <= 'Z')temp[upIndex++] = ch[i];elsetemp[digitIndex++] = ch[i];}for(int i = 0; i < N; ++i){ch[i] = temp[i];  //写回原数组}delete [] temp;temp = NULL;
}
void printArr(char* arr, size_t N)  //打印字符数组
{for(int i = 0; i < N; ++i){cout << arr[i] << " ";}cout << endl;
}
int main()
{cout << "请输入N,程序生成大小写字母和数字的组合随机序列:";size_t N;cin >> N;char ch[N];randomABCandNum(ch, N);cout << "程序现将字符按[小写字母][大写字母][数字]排列,内部顺序不变:" << endl;countseparate(ch, N);printArr(ch, N);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯2019秋招笔试真题

1、小Q爬塔 描述&#xff1a;小Q正在攀登一座宝塔&#xff0c;这座塔很特别&#xff0c;塔总共有n曾层&#xff0c;但是没两层之间的净高却不相同&#xff0c;所以造成了小Q爬过每层的时间也不同。如果某一层的高度为x&#xff0c;那么爬过这一层锁需的还是件也是x。小Q孩会使…

2019 最新蚂蚁花呗Java三面题目:红黑树+并发容器+CAS+Solr+分布式等

蚂蚁金服专场 涵盖了蚂蚁金服从Java工程师到技术专家面试题目 支付宝高级Java三面题目&#xff1a;线程锁事务雪崩Docker等 蚂蚁花呗团队面试题&#xff1a;LinkedHashMapSpringCloud线程锁分布式 蚂蚁金服高级Java面试题目 支付宝Java开发四面:NgnixMQ队列集群并发抢购 蚂…

事理图谱:一种纯学术需求、无法落地、漏洞百出的新技术或新概念?

过去几个月&#xff0c;深陷所谓“事理图谱”当中&#xff0c;苦恼不已。从2018年4月份开始做所谓的“事理图谱”以来至今&#xff0c;磕磕碰碰&#xff0c;做了很多技术上的尝试&#xff0c;也不乏在应用事理图谱上尝试了多种做法&#xff0c;也不乏写了几篇关于事理图谱的文章…

论文浅尝 | 实体图的预览表格生成

链接&#xff1a;ranger.uta.edu/~cli/pubs/2016/tabview-sigmod16-yan.pdf动机对于结构化数据和关系数据&#xff0c;通常使用Schema图为数据库的使用者提供基本信息。因此&#xff0c;作者提出了生成预览表格&#xff08;preview table&#xff09;的方法&#xff0c;为实体图…

万能的BERT连文本纠错也不放过

一只小狐狸带你解锁炼丹术&NLP秘籍作者&#xff1a;孙树兵学校&#xff1a;河北科技大学方向&#xff1a;QA/NLU/信息抽取编辑&#xff1a;小轶背景文本纠错&#xff08;Spelling Error Correction&#xff09;技术常用于文本的预处理阶段。在搜索引擎、输入法和 OCR 中有着…

POJ 1664 苹果放盘子(递归)

题目链接&#xff1a;http://poj.org/problem?id1664 m个相同的苹果放在n个相同的盘子里&#xff0c;有多少种不一样的方法。 例如&#xff0c;3个苹果放在4个盘子里有&#xff08;3&#xff0c;0&#xff0c;0&#xff0c;0&#xff09;&#xff08;1&#xff0c;1&#xf…

2019字节跳动秋招笔试

毕业旅行 题目描述&#xff1a; 小明目前在做一份毕业旅行的规划。打算从北京出发&#xff0c;分别去若干个城市&#xff0c;然后再回到北京&#xff0c;每个城市之间均乘坐高铁&#xff0c;且每个城市只去一次。由于经费有限&#xff0c;希望能够通过合理的路线安排尽可能的省…

蚂蚁金服4轮面经(Java研发):G1收集器+连接池+分布式架构

一面 线程池有哪些参数&#xff1f;分别有什么用&#xff1f;如果任务数超过的核心线程数&#xff0c;会发生什么&#xff1f;阻塞队列大小是多少&#xff1f; 数据库连接池介绍下&#xff0c;底层实现说下 hashset底层实现&#xff0c;hashmap的put操作过程 说说HaspMap底层…

浅谈事理图谱认知:系统体系+领域收敛+人机协同+辅助范式

事理图谱&#xff0c;不是简单的事件识别和事件关系识别以及事件三元组存储&#xff0c;是一个需要健全事件体系牵引、具有领域收敛特性、在构建上需要人机协同&#xff0c;在应用上拥有多种辅助范式形成的系统体系工程。–刘焕勇&#xff0c;于中科院软件所&#xff0c;201910…

算法--二分查找--求平方根(循环法/递归法)

二分查找&#xff1a; 数据需要是顺序表&#xff08;数组&#xff09;数据必须有序可以一次排序&#xff0c;多次查找&#xff1b;如果数据频繁插入&#xff0c;删除操作&#xff0c;就必须保证每次操作后有序&#xff0c;或者查找前继续排序&#xff0c;这样成本高&#xff0…

论文浅尝 | 在生成式多跳机器阅读任务中引入外部常识知识

Commonsense for Generative Multi-Hop Question Answering Tasks链接&#xff1a; https://arxiv.org/abs/1809.06309背景机器阅读任务按照答案类型的不同&#xff0c;可以大致分为:(1) 分类问题: 从所有候选实体选择一个(2) answer span: 答案是输入文本的一个片段(3) …

Overleaf v2 评测

原文链接&#xff1a;https://www.jianshu.com/p/1d73d4b9e880 Overleaf v2 评测 去年&#xff0c;两个著名的Latex在线编辑器Overleaf和Sharelatex合并了&#xff0c;强强联手&#xff0c;让我们对他们合并之后的新产品充满了期待。最近&#xff0c;他们的新产品发布了&#x…

蚂蚁中间件团队Java面试题:Netty+Redis+Kafka+MongoDB+分布式

蚂蚁中间件一面&#xff1a; 自我介绍 JVM垃圾回收算法和垃圾回收器有哪些&#xff0c;最新的JDK采用什么算法。 新生代和老年代的回收机制。 讲一下ArrayList和linkedlist的区别&#xff0c;ArrayList与HashMap的扩容方式。 Concurrenthashmap1.8后的改动。 Java中的多线…

面试必备!卖萌屋算法工程师思维导图—统计机器学习篇

卖萌屋的妹子们&#xff08;划掉&#xff09;作者团整理的算法工程师思维导图&#xff0c;求职/自我提升/查漏补缺神器。该手册一共分为数据结构与算法、数学基础、统计机器学习和深度学习四个部分。下面是第二部分统计机器学习的内容~公众号后台回复【思维导图】获取完整手册&…

【重磅】全行业事理图谱V3.0正式发布:基于实证的由因求果、由果溯因,因果路径发现

我们一直在事理图谱的探索和应用路上不断前行。。。 【中科院软件所】数据地平线的金融事理图谱Demo已经和大家见面有一段时间了(Demo地址&#xff1a;http://eg.zhiwenben.com/)&#xff0c;这段时间我们收到了很多用户的建议反馈和合作邀约&#xff0c;大家对产品的认可和喜…

算法--二分查找--查找给定条件的值

文章目录1.数据有序且无重复&#xff0c;查找给定值2.数据有序且有重复&#xff0c;查找第1个给定的值3.查找最后一个值等于给定值的元素4.查找第一个大于等于给定值的元素5.查找最后一个小于等于给定值的元素6.查找IP归属&#xff08;利用上面#5代码&#xff09;7.循环有序数组…

1.1 字符串的旋转+1.2 字符串的包含

1 .1 字符串的旋转 题目描述&#xff1a; 给定一个字符串&#xff0c;要求将字符串前面的若干个字符串移到字符串的尾部。例如&#xff0c;将字符串“abcdef”的前三个字符‘a’、‘b’&#xff0c;‘c’移到字符串的尾部&#xff0c;那么原字符串将变成“defabc”。请写一个函…

论文浅尝 | 利用边缘标签的网络嵌入强化方法

链接&#xff1a;https://arxiv.org/pdf/1809.05124.pdf本文主要关注Network embedding问题&#xff0c;以往的network embedding方法只将是网络中的边看作二分类的边(0,1)&#xff0c;忽略了边的标签信息&#xff0c;本文提出的方法能够较好的保存网络结构和边的语义信息来进行…

2018阿里集团中间件Java面试题(4面)

持续分享阿里技术面试 最新天猫3轮面试题目&#xff1a;虚拟机并发锁Sql防注入Zookeeper 最新阿里内推高级Java面试题 蚂蚁金服4轮面经&#xff08;Java研发&#xff09;:G1收集器连接池分布式架构 天猫研发团队&#xff08;4面全题目&#xff09;&#xff1a;并发压测Mina事…

卷积神经网络中十大令人拍案叫绝的操作

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;Justin ho来源&#xff1a;https://zhuanlan.zhihu.com/p/28749411前言CNN从2012年的AlexNet发展至今&#xff0c;科学家们发明出各种各样的CNN模型&#xff0c;一个比一个深&#xff0c;一个比一个准确&#xff0c;一个…