プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

ワードブレイク問題


この問題の入力では、1つの文がスペースなしで与えられ、別の辞書にもいくつかの有効な英語の単語が提供されます。個々の辞書の単語で文を分割するための可能な方法を見つける必要があります。

有効な単語が見つかったら、文字列の左側から検索して有効な単語を検索し、その文字列の次の部分の単語を検索します。

入力と出力

Input:
A set of valid words as dictionary, and a string where different words are placed without spaces.
Dictionary: {mobile, sam, sung, man, mango, icecream, and, go, i, love, ice, cream}
Given String: “ilovemangoicecream”
Output:
All possible ways to break the string into given words.
i love man go ice cream
i love man go icecream
i love mango ice cream
i love mango icecream
アルゴリズム
wordBreak(string, n, result)

入力- 与えられた文字列、文字列の長さ、分離された文字列。

出力- 辞書を使用して文字列を区切ります。

Begin
   for i := 0 to n, do
      subStr := substring of given string from (0..i)
      if subStr is in dictionary, then
         if i = n, then
            result := result + subStr
            display the result
            return
         wordBreak(substring from (i..n-i), n-i, result, subStr, ‘space’)
   done
End

#include <iostream>
#define N 13
using namespace std;

string dictionary[N] = {"mobile","samsung","sam","sung","man","mango", "icecream","and",
                        "go","i","love","ice","cream"};

int isInDict(string word){    //check whether the word is in dictionary or not
   for (int i = 0; i < N; i++)
      if (dictionary[i].compare(word) == 0)
         return true;
   return false;
}

void wordBreak(string str, int n, string result) {
   for (int i=1; i<=n; i++) {
      string subStr = str.substr(0, i);       //get string from 0 to ith location of the string
      if (isInDict(subStr)) {       //if subStr is found in the dictionary
         if (i == n) {
            result += subStr; //add substring in the result.
            cout << result << endl;
            return;
         }
         wordBreak(str.substr(i, n-i), n-i, result + subStr + " ");    //otherwise break rest part
      }
   }
}

int main() {
   string str="iloveicecreamandmango";
   wordBreak(str, str.size(),"");
}

出力

i love man go ice cream
i love man go icecream
i love mango ice cream
i love mango icecream

  1. PythonのWordBreakII

    空でない文字列sとwordDictという辞書があるとします。この辞書には空でない単語のリストが含まれており、sにスペースを追加して、各単語が次のような文を作成します。有効な辞書の単語。そのような可能な文をすべて見つけなければなりません。 「appleraincoat」と辞書は[「app」、「apple」、「rain」、「coat」、「raincoat」] これを解決するには、次の手順に従います- マップメモを1つ作成する 解決と呼ばれるメソッドを定義します。これには文字列とwordDictが必要です sがnullの場合、空のリストを返します メモにsがある場合、-

  2. 文字列内の単語の出現をカウントするPythonプログラム

    このチュートリアルでは、文字列に単語が出現する回数をカウントするプログラムを作成します。単語と文字列が与えられたら、文字列内の単語の頻度を計算する必要があります。 文字列があるとします私はプログラマーです。私は学生です。 そして、という言葉は 。これから作成するプログラムは、数値 2を返します。 単語が発生する 文字列内で2回。 以下の手順に従って、目標を達成しましょう。 アルゴリズム 1. Initialize the string and the word as two variables. 2. Split the string at spaces using the split()