问题标签 [lexicographic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1217 浏览

php - 根据字典顺序将单词转换为数字

我正在尝试计算一个单词的“分数”,以便将其用于确定它在 Redis 排序集中的词典顺序(按字母顺序列出的单词)。

阅读这篇文章它说:

如何把一个单词变成一个分数?

例如,如果你想使用前四个字母来产生分数,这是规则:

分数 = 第一个字节值*(256^3) + 第二个字节值*(256^2) + 第三个字节值*(256^1) + 第四个字节值

如果单词的长度小于 4 个字符,则只需从总和不存在的字符中省略。

为什么这行得通?您只是将字节视为 radis-256 数字的数字:)

有了这个理论,我想出了以下代码来测试这是否可以在 PHP 数组中工作:

但是,这会返回:

这不是按字母顺序排列的。

谁能发现这个问题(显然分数计算是错误的)?我可能误解了帖子:-/

0 投票
3 回答
38552 浏览

python - 忽略大小写的字符串排序列表

我有一个列表,其中包含代表动物名称的字符串。我需要对列表进行排序。如果我使用sorted(list),它将首先以大写字符串给出列表输出,然后是小写。

但我需要以下输出。

输入:

输出:

0 投票
2 回答
1406 浏览

c++ - C ++:使用运算符的字典比较字符串

据我了解,如果我使用小于 (<) 等运算符比较两个字符串,C++ 将按字典顺序比较它们。我想利用这个通过数组搜索并返回最小的字典值。因为我使用临时值来查找最小的值string smallest

如您所见,我已经赋予它价值z。字典价值最高的字母/符号是什么?是否有任何已经定义的静态变量我可以在 C++ 中分配它?这样做的规范是什么?

0 投票
2 回答
3803 浏览

c++ - 旋转后按字典顺序最小的字符串

我正在尝试在 spoj 中解决这个问题

我需要找到给定字符串的旋转次数,使其在所有旋转中按字典顺序最小。

例如:

原来的:ama

第一次轮换:maa

第二次旋转:aam这是字典顺序上最小的旋转,所以答案是 2。

这是我的代码:

对于此解决方案,我得到“超出时间限制”。我不明白可以进行哪些优化。如何提高解决方案的速度?

0 投票
4 回答
1099 浏览

c++ - 如何在 C++ 中有效地对四重结构进行排序?

我有一个包含成员 x、y、z 和 w 的结构。如何在 C++ 中先按 x,然后按 y,按 z,最后按 w 有效排序?

0 投票
2 回答
216 浏览

algorithm - 字典排列如何在算法上起作用?

或者例如,如果给您“abcd”,则词典排列将是:

我直观地理解它是如何排序的,如果你给我任何一组字母或数字,我可以计算出它们应该如何排序,但不是数学上你将如何从一个步骤到下一步。例如:从 abdc 到 acbd 的数学过程是什么?

0 投票
4 回答
3380 浏览

algorithm - 这个用于生成下一个按字典顺序排列的算法是如何工作的?

这是我发现的排序词典排列的分步过程:

  1. 取先前打印的排列并找到其中最右边的字符,该字符小于其下一个字符。让我们称这个字符为“第一个字符”。

  2. 现在找到“第一个字符”的天花板。天花板是“第一个字符”右侧的最小字符,大于“第一个字符”。让我们将 ceil 字符称为“第二个字符”。

  3. 交换上述 2 个步骤中找到的两个字符。

  4. 在“第一个字符”的原始索引之后对子字符串进行排序(按非递减顺序)。

资料来源:http ://www.geeksforgeeks.org/lexicographic-permutations-of-string/

我已经为它编写了我的伪代码,并且现在也将开始对其进行编程。我了解算法中发生了什么,但我不确定它为什么会起作用。就像第 2 步一样,为什么天花板字符必须是“'第一个字符'右侧的最小字符,大于'第一个字符'”。我知道如果你不这样做,它就不起作用,但我不明白为什么当你这样做时它会起作用。

如果有人可以向我解释为什么你需要算法中的每一步,那就太好了,它会让我在开始我的代码时更加自在。

编辑:我应该提到我理解为什么你将子字符串重新排列为升序,以找到最小的置换,我不明白的是步骤 1 和 2 关于你为什么交换天花板和第一个字符

0 投票
2 回答
905 浏览

java - 字典字节是什么意思

我尝试搜索这个词,但无法得到正确的答案...
lexicographical指按字母顺序排序,或者如果两个或多个参数共享相同的名称,则按它们的值排序。

谢谢你的帮助!!!!.....

0 投票
1 回答
912 浏览

c++ - 生成字典排列:分段错误

我有这个代码来生成字典排列。使用以下逻辑:

  1. 从给定测试字符串中字符的递增顺序排列开始。
  2. 要生成下一个字典排列:

a) 找到比下一个字符小的最右边的字符。说 A。

b) 在 A 的右边,找到下一个较大的字符。说 B. 并交换 A 和 B。

c) 在 A 原位置的右边,按升序对字符进行排序。

当我们得到最后一个排列时,算法结束。即给定测试字符串的反转。我的测试字符串s = "0123456789"

编辑: 在程序的每次运行中,我都会得到一个单独的分段错误位置。

得到一个:

得到 B 然后递归方法(qsort 是一个函数<cstdlib>):

启动功能:

从主调用:nextpermute(test);

如果测试字符串是"01234567"或小于这个,它工作得很好。但如果它是类似 "012345678"or的字符串"0123456789",那么我会遇到分段错误。请帮忙!!

0 投票
1 回答
1088 浏览

java - java中的字典排序?

我正在尝试使用 java 中的 compareTo 方法按字母顺序对 3 个字符串进行排序,而不使用数组。

最快的方法是设置 6 个比较语句并按最小到最大排序,还是有更简单的方法?谢谢!