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

Pythonで2つの文字列に共通する単語の数を求める方法

2つの文字列 s0s1 があり、それぞれが1つの文を表しているとします。このとき、両方の文に共通して含まれる単語(重複は数えない)の個数を求める問題を考えてみましょう。なお、単語の比較では大文字・小文字を区別しないため、「tom」と「ToM」は同じ単語として扱われます。

たとえば、入力が s0 = "i love python coding"s1 = "coding in python is easy" の場合、共通する単語は ['python', 'coding'] の2つなので、出力は 2 になります。

解決のための手順

この問題は、次の手順で解くことができます。

  • s0s1 をすべて小文字に変換する
  • s0List:s0 を空白で分割した単語のリストを作成する
  • s1List:s1 を空白で分割した単語のリストを作成する
  • それぞれのリストからセット(set)を生成し、積集合を求めることで共通単語を取得する
  • 積集合の要素数を返す

Pythonの set(集合型)を使うと、重複の除去と共通要素の抽出が簡単に行えます。& 演算子(または intersection() メソッド)で2つの集合の積集合を計算できるのがポイントです。

実装例

それでは、実際のコードを見て理解を深めましょう。

class Solution:
    def solve(self, s0, s1):
        s0 = s0.lower()
        s1 = s1.lower()
        s0List = s0.split(" ")
        s1List = s1.split(" ")
    return len(list(set(s0List) & set(s1List)))
ob = Solution()
S = "i love python coding"
T = "coding in python is easy"
print(ob.solve(S,T))

入力

"i love python coding", "coding in python is easy"

出力

2

コードの解説

処理の流れを順番に見ていきましょう。

  1. lower() メソッドで文字列全体を小文字化し、大文字・小文字の違いによる判定ミスを防ぎます。
  2. split(" ") で文を空白区切りで分割し、単語のリストを作成します。
  3. set() で各リストを集合に変換すると、重複する単語が自動的に除外されます。
  4. & 演算子で2つの集合の積集合(共通する単語のみ)を取得します。
  5. len() でその要素数を返せば、共通単語の個数が求まります。

このように、Pythonの集合演算を活用すれば、ループや条件分岐を書かずとも簡潔に共通単語をカウントできます。計算量も各文字列の長さにほぼ比例するため、実用的なテキスト比較にも十分対応できるアプローチです。

  1. Pythonで2つの数の公約数を求めるプログラムの書き方

    はじめに この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 2つの整数が与えられたとき、それらに共通する約数(公約数)の個数を表示する必要があります。 アプローチの考え方 まず、入力として受け取った2つの数のうち、小さい方の値(最小値)を計算します。続いて、1からその最小値までの各値で2つの数を順番に割っていき、両方の数を割り切ることができるかどうかをループ処理で確認します。 条件が真(True)と評価されるたびに、カウンターを1ずつ増加させます。最終的なカウンターの値が、2つの数の公約数の個数となります。 実装例 それでは、以下のコードで実際の実装を見てみましょう。

  2. 【Python入門】2つの文字列から珍しい単語(ユニークな単語)を見つけるプログラムの作り方

    はじめに この記事では、以下の問題文に対する解決方法を、実際のコード例とともにわかりやすく解説します。 問題文 2つの文字列が与えられたとき、その中から「珍しい単語」(どちらか一方の文字列にしか出現しない単語)をすべて抽出することを目標とします。両方の文字列に共通して含まれる単語は除外します。 解決のアプローチ ここでは辞書(dict)を使った出現回数のカウント方式を採用します。手順は次のとおりです。 空の辞書を用意する 各文字列をsplit()で単語ごとに分割する 各単語の出現回数を辞書に記録する 出現回数がちょうど1回の単語だけを結果として返す 実装例 # 珍しい単語を見つける関