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

Javaで文字列内の最初に繰り返される単語・文字を検索する方法

Javaを使って、文字列の中に最初に繰り返し現れる単語や文字を見つける方法を解説します。ここではHashSetを活用することで、効率よく重複を検出する手法を紹介します。

サンプルコード

import java.util.*;
public class Demo{
    static char repeat_first(char my_str[]){
        HashSet<Character> my_hash = new HashSet<>();
        for (int i=0; i<=my_str.length-1; i++){
            char c = my_str[i];
            if (my_hash.contains(c))
            return c;
            else
            my_hash.add(c);
        }
        return '\0';
    }
    public static void main (String[] args){
        String my_str = "thisisasampleonlysample";
        char[] my_arr = my_str.toCharArray();
        System.out.println("The first repeating character in the string is :");
        System.out.println(repeat_first(my_arr));
    }
}

実行結果

The first repeating character in the string is :
i

コードの解説

Demoクラスの中には、repeat_firstという関数が定義されています。この関数は文字配列を引数として受け取り、まず空のHashSetを生成します。

続いて、forループで文字列を先頭から1文字ずつ走査していきます。各文字について、すでにHashSetに登録されているかどうかをcontainsメソッドで判定します。

  • すでに存在する場合 → その時点でその文字を戻り値として返します(これが「最初に繰り返された文字」です)。
  • 存在しない場合 → その文字をHashSetに追加し、次の文字へ進みます。

この仕組みにより、ある文字が2回目に出現した瞬間に即座に検出できるため、文字列全体を何度も比較する必要がありません。計算量はO(n)で済み、非常に効率的です。

main関数の処理の流れ

main関数では、まず対象となる文字列"thisisasampleonlysample"を定義し、toCharArray()メソッドを使って文字配列に変換します。その後、この配列を引数としてrepeat_first関数を呼び出し、得られた結果をコンソールに出力しています。

この例の場合、「t」「h」「i」「s」と順に読み込み、5番目の文字「i」がすでにHashSetに存在するため、最初に繰り返された文字として「i」が出力されます。

  1. Pythonで辞書(Counter)を使って文字列内の最初に繰り返される単語を検索する方法

    与えられた文の中には、文が終わる前に同じ単語が繰り返して登場することがあります。この記事では、Pythonを使って文中で最初に繰り返された単語を検出するプログラムを紹介します。 処理の流れ このプログラムでは、以下の手順で目的の単語を特定します。 与えられた文字列をスペース区切りで単語に分割する collectionsモジュールを使って、分割した単語を辞書形式(カウンタ)に変換する 単語のリストを先頭から順に走査し、出現頻度が1より大きい最初の単語を見つける プログラム:繰り返される単語を検索する 以下のプログラムでは、collectionsパッケージに含まれるCounterクラスを使用し

  2. Pythonで文字列内の最初に繰り返される単語を見つける方法

    文字列が1つ与えられ、その中で最初に繰り返し出現する単語を見つけるのが本記事のテーマです。この問題を実装する際には、Pythonの標準ライブラリである「collections」モジュールを活用します。collectionsが提供するCounter()クラスを使うことで、各単語の出現回数を簡単に集計できます。 アルゴリズム 処理の手順は以下のとおりです。 与えられた文字列をスペースで区切り、単語のリストに分割します。 単語のリストをCounter(辞書形式)に変換し、各単語の出現回数を集計します。 単語のリストを先頭から順に走査し、出現回数が1より多い最初の単語を特定します。 サンプルコード