問題タブ [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で並べ替えられたセット(アルファベット順にリストされた単語)の辞書式順序を決定するために使用しようとしています。

この投稿を読むと、次のように書かれています。

単語をスコアに変える方法は?

たとえば、最初の4文字を使用してスコアを生成する場合、次のルールが適用されます。

スコア=最初のバイト値*(256 ^ 3)+ 2番目のバイト値*(256 ^ 2)+ 3番目のバイト値*(256 ^ 1)+4番目のバイト値

単語の長さが4文字未満の場合は、存在しない文字を合計から省略してください。

なぜこれが機能するのですか?あなたはバイトをradis-256の数字の数字と見なしているだけです:)

この理論で、私はこれがPHP配列で機能するかどうかをテストするために次のコードを思いつきました。

ただし、これは次のようになります。

これはアルファベット順ではありません。

誰かが問題を見つけることができますか(明らかにスコアの計算は間違っています)?投稿を誤解した可能性があります:-/

0 投票する
3 に答える
38552 参照

python - 大文字/小文字を無視して文字列のリストを並べ替える

動物の名前を表す文字列を含むリストがあります。リストを並べ替える必要があります。を使用するsorted(list)と、最初に大文字の文字列、次に小文字のリスト出力が表示されます。

しかし、私は以下の出力が必要です。

入力:

出力:

0 投票する
2 に答える
1406 参照

c++ - C++: 演算子を使用して文字列を比較する辞書式

私が理解しているように、より小さい (<) C++ などの演算子を使用して 2 つの文字列を比較すると、辞書式に比較されます。この配列の検索を利用して、最小の辞書式の値を返したいと思います。そして、最小のものを見つけるために一時的な値を使用していますstring smallest

ご覧のとおり、値を与えましたz。辞書式の値が最も高い文字/記号は何ですか? C++ で割り当てることができる、既に定義されている静的変数はありますか? これを行うときの標準は何ですか?

0 投票する
2 に答える
3803 参照

c++ - 回転後の辞書編集的に最小の文字列

私はspojでこの問題を解決しようとしています

すべての回転の中で辞書編集的に最小になる特定の文字列の回転数を見つける必要があります。

例えば:

オリジナル:ama

最初のローテーション:maa

2 番目のローテーション:aamこれは辞書編集的に最小のローテーションなので、答えは 2 です。

これが私のコードです:

このソリューションで「時間制限を超えました」というメッセージが表示されます。どのような最適化を行うことができるかわかりません。ソリューションの速度を上げるにはどうすればよいですか?

0 投票する
4 に答える
1099 参照

c++ - C++ で 4 つの構造体を効率的に並べ替えるにはどうすればよいですか?

メンバー x、y、z、および w を持つ構造体があります。C++で最初にx、次にy、z、最後にwで効率的にソートするにはどうすればよいですか?

0 投票する
2 に答える
216 参照

algorithm - 辞書順列はアルゴリズム的にどのように機能しますか?

または、たとえば、「abcd」が与えられた場合、辞書順列は次のようになります。

どのようにソートされるかは直感的に理解できます。文字や数字のセットを教えていただければ、それらをどのようにソートすべきかを理解することはできますが、あるステップから次のステップに進む方法を数学的に理解することはできません。例: abdc から acbd に移動する数学的プロセスは何ですか?

0 投票する
4 に答える
3380 参照

algorithm - 次の辞書式順序順列を生成するこのアルゴリズムはどのように機能しますか?

これは、辞書編集順列を注文するために私が見つけた段階的なプロセスです。

  1. 前に印刷された順列を取り、次の文字よりも小さい右端の文字を見つけます。この文字を「最初の文字」と呼びましょう。

  2. 「最初のキャラクター」の天井を見つけます。天井は、「最初の文字」よりも大きい「最初の文字」の右側にある最小の文字です。ceil 文字を「2 番目の文字」と呼びましょう。

  3. 上記の 2 つの手順で見つかった 2 つの文字を入れ替えます。

  4. 「最初の文字」の元のインデックスの後に部分文字列を (減少しない順序で) 並べ替えます。

ソース: http://www.geeksforgeeks.org/lexicographic-permutations-of-string/

私はすでに擬似コードを書いており、今からプログラミングを始めようとしています。アルゴリズムで何が起こっているかは理解していますが、なぜ機能するのかわかりません。ステップ 2 のように、天井の文字が「最初の文字よりも大きい、最初の文字の右側にある最小の文字」である必要があるのはなぜですか。このようにしないとうまくいかないことは理解していますが、そうするとうまくいく理由がわかりません。

アルゴリズムの各ステップが必要な理由を誰かが説明してくれれば、それは素晴らしいことであり、コードを開始するのがはるかに快適になります。

編集:最小の順列を見つけるために、部分文字列をacsending順序に再配置する理由を理解していることを言及する必要があります。私が理解していないのは、天井と最初の文字を交換する理由に関するステップ1と2です

0 投票する
1 に答える
912 参照

c++ - 辞書順列の生成: セグメンテーション違反

辞書順列を生成するためのこのコードがあります。次のロジックが使用されます。

  1. 特定のテスト文字列内の文字の昇順の配置から開始します。
  2. 次の辞書順列を生成するには:

a) 次の文字よりも小さい右端の文字を見つけます。Aと言ってください。

b) A の右側で、次に大きい文字を見つけます。B と言って、A と B を入れ替えます。

c) A の元の位置の右側で、文字を昇順で並べ替えます。

最後の順列を取得すると、アルゴリズムは終了します。つまり、指定されたテスト文字列の逆。私のテスト文字列s = "0123456789"

編集: プログラムを実行するたびに、セグメンテーション違反の別の位置を取得します。

A を取得するには:

B を取得してから再帰的アプローチを取得するには (qsort は の関数です<cstdlib>):

開始機能:

メインからの呼び出し:nextpermute(test);

テスト文字列が"01234567"0 またはそれより小さい場合、問題なく動作します。"012345678"しかし、またはのような文字列の 場合"0123456789"、セグメンテーション違反が発生します。助けてください!!

0 投票する
1 に答える
1088 参照

java - Javaでの辞書式ソート?

配列を使用せずにJavaのcompareToメソッドを使用して、3つの文字列をアルファベット順にソートしようとしています。

6つの比較ステートメントを設定し、最小から最大にソートすることでこれを行う最速の方法はありますか、それとももっと簡単な方法はありますか? ありがとう!