C++程序:按字母顺序重新排列单词的位置

c++程序:按字母顺序重新排列单词的位置

在这个问题中,一个字符串被作为输入,我们必须按字典顺序对字符串中出现的单词进行排序。为此,我们为字符串中的每个单词(之间用空格区分)分配一个从 1 开始的索引,并以排序索引的形式获得输出。

String = {“Hello”, “World”}“Hello” = 1“World” = 2

由于输入字符串中的单词已按字典顺序排列,因此输出将打印为“1 2”。

让我们看看一些输入/结果场景 –

假设输入字符串中的所有单词都相同,让我们看看结果 –

立即学习“C++免费学习笔记(深入)”;

Input: {“hello”, “hello”, “hello”}Result: 3

获得的结果将是单词的最后一个位置。

现在让我们考虑包含以相同字母开头的单词的输入字符串,结果输出将基于起始字母的后继字母。

Input: {“Title”, “Tutorial”, “Truth”}Result: 1 3 2

该方法的另一个常见输入场景和获得的结果如下 –

Input: {“Welcome”, “To”, “Tutorialspoint”}Result: 2 3 1

注意 – 返回的位置是这些单词在输入字符串中的原始位置。一旦单词在方法内排序,这些数字就不会改变。

算法

此方法使用矢量和地图抽象数据类型执行。

使用自动迭代器在字符串范围内遍历输入字符串。

按字母顺序交换单词是通过将这些元素推到矢量数据类型的后面来完成的。

一旦单词按字典顺序重新排列,这些单词在字符串中的原始位置就会作为输出返回。

示例

让我们有一个字符串是[“articles”,“point”,“world”],字符串的顺序是 –

“articles”: 1“point”: 2“world”: 3

我们可以将每个字符串与索引进行映射。然后我们可以对字符串进行排序,然后打印出映射的索引。我们可以使用 C++ 中的映射(map)这种排序数据结构来存储键值对。让我们快速实施我们的方法。

#include #include #include using namespace std;vector solve(vector& arr) {   map mp;   int index = 1;   for(string s : arr)      mp[s] = index++;   vector res;   for(auto it : mp)      res.push_back(it.second);   return res;}int main() {   vector arr = {"articles", "point", "world"};   vector res = solve(arr);   for(int i : res) cout << i << " ";   return 0;}

输出

1 2 3

现在字符串的重新排序将是 –

“point,”“articles,”“world”

时间复杂度 – O(n * log n)

空间复杂度 – O(n)

结论

我们使用地图来为我们进行排序和映射。我们还可以使用哈希映射,对向量或数组进行排序,然后打印哈希映射中的索引。时间复杂度为 O(n*log(n)),空间复杂度为 O(n)。

以上就是C++程序:按字母顺序重新排列单词的位置的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:17:17
下一篇 2025年12月17日 21:17:20

相关推荐

  • 输入一个字符,如何判断是字母,数字还是特殊字符

    输入一个字符,如何判断是字母,数字还是特殊字符 方法如下: 1、使用格式符%c获得输入的字符; 2、判断该字符在ascii码表中的位置即可。 #include int main(){ char ch; printf(“请输入一个字符”); scanf(“%c”,&ch); if(ch &gt…

    2025年12月17日
    000
  • Perl中如何对混合字符串进行排序?(代码示例)

    perl中的排序可以使用预定义的函数“sort”来完成;此函数使用快速排序算法对传递给它的数组进行排序。下面本篇文章就给大家介绍如何使用sort()函数以各种方式对包含混合形式的字符串(即字母数字字符串)的数组进行排序,希望对大家有所帮助。【视频教程推荐:perl教程】 方法一:sort()+sub…

    2025年12月17日
    000
  • RSS订阅如何排序?

    RSS订阅默认按发布时间倒序排列,最新内容优先显示,排序功能由阅读器实现,用户可自定义按日期、标题、来源或阅读状态等规则调整,以提升信息获取效率。 RSS订阅的排序机制,默认情况下通常是按照内容的发布时间倒序排列,也就是最新发布的内容会显示在最前面。不过,许多RSS阅读器和聚合服务也提供了自定义排序…

    2025年12月17日
    000
  • XSLT如何排序节点?

    XSLT中排序节点的核心是使用元素,它通过select、order和data-type等属性定义排序键和规则,支持按文本、数值或多条件排序,需注意默认按字符串排序可能导致数字排序错误,应显式设置data-type=”number”以避免陷阱。 这段XSLT会遍历所有的 节点,…

    2025年12月17日
    000
  • XSLT的sort元素如何指定排序规则?

    xslt的xsl:sort元素用于定义数据排序规则,必须在xsl:apply-templates或xsl:for-each内使用。1. select属性指定排序键的xpath表达式,如select=”price”按价格排序;2. order属性定义顺序,可选ascending…

    2025年12月17日
    000
  • Golang sort排序实现 自定义排序函数写法

    Go语言中sort包支持切片和自定义数据排序。1. sort.Slice通过比较函数实现灵活排序,如按分数降序、姓名升序;2. 实现sort.Interface接口(Len、Less、Swap)可复用排序规则,配合sort.Stable保持稳定;3. 注意Less返回逻辑、使用SliceStable…

    2025年12月15日
    000
  • 怎样使用Golang的sort库排序 自定义排序函数实现方案

    使用sort.Slice可快速对切片自定义排序,如按年龄升序;实现sort.Interface接口适合封装可复用的排序逻辑。 在Go语言中,sort包提供了对切片和自定义数据结构进行排序的实用功能。除了对基本类型(如int、string)排序外,你还可以通过实现自定义排序逻辑来处理复杂结构体或特定排…

    2025年12月15日
    000
  • Golang的sort排序实现 自定义排序函数写法

    Go语言中sort包支持自定义排序,1. 使用sort.Slice配合比较函数可灵活排序,如按结构体字段升序或降序;2. 实现sort.Interface接口(Len、Less、Swap)适用于复杂或复用场景,可定义ByAge、ByName等类型;3. 多条件排序需在Less或比较函数中组合逻辑,先…

    2025年12月15日
    000
  • Python冒泡排序、快速排序、堆排序

    冒泡排序通过相邻元素交换将最大值逐步“浮”到末尾,每轮确定一个最大值位置,具有稳定性但时间复杂度为O(n²),适合小数据量或教学演示;快速排序采用分治策略,选取基准值将数组划分为两部分并递归排序,平均时间复杂度O(n log n),效率高但不稳定,广泛应用于实际场景;堆排序基于最大堆性质,每次取出堆…

    2025年12月15日
    000
  • python归并排序和快速排序比较

    归并排序稳定且时间性能可预测,适用于链表和外部排序;快速排序平均更快、空间效率高,但不稳定,适合内部排序。 归并排序和快速排序都是高效的排序算法,基于分治思想,平均时间复杂度为 O(n log n),但在实现方式、稳定性、空间使用和实际表现上有明显区别。下面从几个关键方面进行比较。 1. 基本原理与…

    2025年12月14日
    000
  • Python如何实现排序_Python排序算法与应用实例

    Python内置排序基于Timsort算法,结合归并排序与插入排序,兼具高效性与稳定性,适用于绝大多数场景;日常开发应优先使用list.sort()或sorted(),仅在学习、特定数据分布或极端优化需求下才考虑手写排序算法。 Python实现排序主要依赖其内置的 list.sort() 方法和 s…

    2025年12月14日
    000
  • python怎么排序列表_python列表排序方法大全

    Python中排序列表最常用的方法是list.sort()和sorted()函数。list.sort()直接修改原列表,不返回新列表,适用于无需保留原始顺序的场景;sorted()则返回一个新的已排序列表,原列表保持不变,适合需要保留原始数据的情况。两者均支持reverse参数进行降序排序,并使用高…

    2025年12月14日
    000
  • python怎么选择排序

    在Python中,可以使用选择排序算法对一个列表进行排序。选择排序的基本思路是每次从未排序的部分中选出最小(或最大)的元素,然后将其放到已排序部分的末尾即可。 本教程操作系统:windows10系统、Python3.11.4版本、Dell G3电脑。 在 Python 中,可以使用选择排序算法对一个…

    2025年12月13日
    000
  • pandas排序有哪些方法

    pandas排序的方法有:1、使用sort_values()方法;2、使用sort_index()方法;3、使用order()方法;4、使用sort()方法;5、使用nlargest()和nsmallest()方法等。详细介绍:1、使用sort_values()方法,用于对数据框或Series对象进…

    2025年12月13日
    000
  • Python程序用于按列对2D数组进行排序

    当声明二维数组或二维数组时,它被视为矩阵。所以,我们知道矩阵由行和列组成。按升序或降序对属于矩阵特定列的元素进行排序的过程称为跨列对 2D 数组进行排序。让我们考虑一个算法和一个输入输出场景,以了解这个概念的确切应用。 输入输出场景 考虑一个二维数组。 arr = [[ 7, 9, 5, 7 ], …

    2025年12月13日
    000
  • php冒泡排序从小到大的方法

    PHP冒泡排序核心是相邻元素两两比较、大的往后挪,每轮将最大值“冒泡”至末尾,共需n-1轮;可优化为提前终止,封装成函数支持任意数组,但时间复杂度为O(n²),仅适用于小数据或教学。 PHP冒泡排序从小到大,核心是**相邻元素两两比较、大的往后挪**,每轮把当前最大值“冒泡”到末尾,重复n-1轮即可…

    2025年12月13日
    000
  • php选择排序是什么意思

    选择排序是通过每轮在未排序部分找最小值并交换到当前位置实现升序的算法;核心是“先选最小值,再一步交换”,共需n−1轮,适合教学、内存敏感或写入代价高的场景。 PHP选择排序是一种基础的、靠“找最小值+换位置”来实现升序排列的算法。它不依赖数组是否接近有序,每轮都从剩余未排序部分挑出最小元素,直接放到…

    2025年12月13日
    000
  • php冒泡排序是什么

    PHP冒泡排序是通过嵌套循环两两比较相邻元素并交换位置,使最大值逐轮“冒泡”至末尾的O(n²)基础算法,适用于教学理解而非实际大数据排序。 PHP以上就是php冒泡排序是什么的详细内容,更多请关注创想鸟其它相关文章!

    2025年12月13日
    000
  • php数组排序保持索引

    使用asort()按值升序并保持键关联,arsort()降序,ksort()/krsort()按键排序,避免sort()等重置索引的函数。 在PHP中对数组进行排序时,如果希望保持键值关联关系(即不打乱原有的索引),应使用不会重置或重新排列键的排序函数。特别是对于关联数组,使用合适的函数非常重要。 …

    2025年12月13日
    000
  • php如何实现多条件组合排序_php根据前端传参动态拼orderby与安全过滤

    答案:通过白名单验证前端排序参数,确保字段和排序方式合法,再拼接安全的ORDER BY子句。定义允许的字段如name、price、created_at及顺序ASC、DESC,接收sort_field和sort_order参数,校验并设默认值;多字段排序时遍历数组,过滤无效项,合并为orderBy字符…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信