文字のコレクションは、文字列データ型で表されます。論理的な配置には文字、数字、記号、スペースが使用されます。ほとんどのコンピューター言語では、他のデータ型と区別するために文字列を一重引用符または二重引用符で囲みます。
プログラマは、入出力操作の実行、テキスト データの保存と操作などに文字列を使用することがよくあります。文字列に対する一般的な操作には、連結 (2 つ以上の文字列の結合)、部分文字列の抽出 (文字列の一部の取得)、文字列内の特定の文字またはパターンの検索などがあります。
###方法###方法 1. ブルート フォース クラッキング方法 −
方法 2. 部分文字列 −
を確認する方法 1: ブルート フォース クラッキング方法
元の文字列の可能なすべての左シフトと右シフトを反復処理し、指定された文字列と比較します。これは、文字列の左シフトと右シフトが指定された文字列になるかどうかを判断するためです。この戦略の一般的な構文は次のとおりです。 -
リーリー ###アルゴリズム###- シフト数が文字列の長さより小さい場合 -
文字列を左にシフトし、最初の文字を文字列の末尾に移動します。
- 可能なすべてのシフトを試した後、一致するものが見つからない場合は、false を返します。
例 1 この実装記述関数 Shifted String は、2 つの文字列パラメータ s と target を受け取り、target が s の左シフトか右シフトかを示すブール値の結果を返します。
方法 2: 部分文字列を確認する
短い文字列が長い文字列の一部であるかどうかを判断するには、「部分文字列のチェック」メソッドを使用できます。このプロセスには、長い文字列を反復しながら、小さい文字列と同じ長さの個々の部分文字列を小さい文字列自体と比較することが含まれます。 2 つの文字列が一致する場合、短い文字列が確かに大きいテキストのサブセットであることが確認されます。エッセイに複雑さと文の長さの変化を加えるには、アイデアをシンプルでありながら魅力的な部分に分割する必要があります。
###文法###次の構文を使用して、文字列の左シフトと右シフトの結果が指定された文字列になるかどうかを判断できます -
リーリー ###アルゴリズム###- 入力文字列とターゲット文字列の入力を開始します。
ステップ 2- 入力文字列の長さとターゲット文字列の長さが等しいことを確認します。等しくない場合は False が返されます。
ステップ3-新しいシーケンスを構築するには、入力文字列を出力文字列とマージする必要があります。
ステップ 4 - 入力文字列が新しく構築されたシーケンスに含まれるかどうかを確認するために比較が必要です。
ステップ 5 - 2 つの文字列がまったく同じである場合、答えは疑問の余地がありませんが、そうでない場合、答えは「いいえ」になります。
例 2 の中国語訳は次のとおりです: 例 2
これは、文字列を左右にシフトすると特定の文字列が生成されるかどうかを判断するために使用される C コードです -
此示例研究了两个数组s1和s2之间的连接,以观察它们是否共享任何相似的字符串。通过坚持s1和s2的长度需要相同的前提,它们被合并为一个名为"s1s1"的数组。进一步对该数组进行分析,以确定是否可以找到s2的一部分,搜索的结果将输出"true"或"false"。这种技术提供了对关联的基本反应,用于进一步评估s1和s2的左右字段,以确认两个数组之间的关联。
#include <iostream> #include <string> using namespace std; bool checkForSubstring(string s1, string s2) { if (s1.length() != s2.length()) { return false; } string s1s1 = s1 + s1; if (s1s1.find(s2) != string::npos) { return true; } return false; } int main() { string s1 = "abcd"; string s2 = "cdab"; if (checkForSubstring(s1, s2)) { cout << "Yes, left or right shift of string " << s1 << " results in " << s2 << endl; } else { cout << "No, left or right shift of string " << s1 << " does not result in " << s2 << endl; } return 0; }
Yes, left or right shift of string abcd results in cdab
我们得到了一个字符串用于这个主题,我们需要确定这个字符串是否可以通过反复应用左移和右移来生成。
将提供的字符串与自身连接起来,并确定新字符串是否保留了原始字符串,这样可以解决这个问题。如果是的话,对字符串本身执行左移和右移操作将得到原始字符串。
作为一种替代方案,我们可以遍历每个移位位置,看看是否有任何移位后的字符串与输入字符串匹配。
解决方案的时间复杂度在这两种情况下都是O(n2),其中n是字符串的长度。ft和任何字符串的右移都会导致给定的字符串−
以上が任意の文字列を左右にシフトすると、指定された文字列が得られるかどうかを確認します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。