特定の文に含まれる各文字の出現回数をカウントするJavaプログラム
指定された文に含まれる各文字の出現回数を数えるには、以下のようなJavaコードを使用します。
サンプルコード
import java.util.*;
public class Demo{
static final int max_chars = 256;
static void char_occurence(String my_str){
int count[] = new int[max_chars];
int str_len = my_str.length();
for (int i = 0; i < str_len; i++)
count[my_str.charAt(i)]++;
char ch[] = new char[my_str.length()];
for (int i = 0; i < str_len; i++){
ch[i] = my_str.charAt(i);
int find = 0;
for (int j = 0; j <= i; j++){
if (my_str.charAt(i) == ch[j])
find++;
}
if (find == 1)
System.out.println("「" + my_str.charAt(i) + "」の出現回数は : " +
count[my_str.charAt(i)]);
}
}
public static void main(String[] args){
Scanner my_scan = new Scanner(System.in);
String my_str = "This is a sample";
char_occurence(my_str);
}
}実行結果
「T」の出現回数は : 1 「h」の出現回数は : 1 「i」の出現回数は : 2 「s」の出現回数は : 3 「 」の出現回数は : 3 「a」の出現回数は : 2 「m」の出現回数は : 1 「p」の出現回数は : 1 「l」の出現回数は : 1 「e」の出現回数は : 1
プログラムの仕組み
Demoクラスには、文字列を受け取って各文字の出現回数を集計するchar_occurenceメソッドが定義されています。まず、ASCII文字を格納できるようサイズ256のint型配列countを用意し、文字列を先頭から順に走査しながら、各文字に対応する配列要素をインクリメントして出現回数を記録していきます。
次に、もう一度文字列を走査し、それまでに処理した文字と照合することで、その文字が初めて出現したものかどうかを判定します。初めて出現した文字(find == 1 の場合)だけが出現回数とともにコンソールへ表示されるため、同じ文字が何度も出力されるのを防ぐことができます。
mainメソッドでは、対象となる文字列「This is a sample」を定義し、char_occurenceメソッドを呼び出しています。なお、ここではScannerクラスのオブジェクトを作成していますが、実際には使用されていません。ユーザーに入力させたい場合は、my_scan.nextLine() を使ってコンソールから文字列を読み込むようにするとよいでしょう。
-
Javaでカウンタープログラムを実装する方法をわかりやすく解説
この記事では、JavaのSwingを使ってシンプルなカウンター(数を数える)アプリケーションを実装する方法を解説します。このプログラムでは、JLabelでカウント用のラベルを表示し、JTextFieldで現在のカウント値を保持し、JButtonで「追加(Add)」「削除(Remove)」「リセット(Reset)」の3つのボタンを作成します。 「Add」ボタンをクリックするとJTextField内のカウントが1ずつ増加し、「Remove」ボタンをクリックすると1ずつ減少します。さらに「Reset」ボタンをクリックすると、カウントは0にリセットされます。 実装例 import java.awt.*
-
Pythonで括弧の各深さごとの文字数をカウントするプログラムの作成方法
文字列 s が与えられます。この文字列は「X」「(」「)」の3種類の文字のみで構成されており、括弧は必ずバランスが取れていて、その間に「X」が含まれています。また、括弧は再帰的にネストしている場合もあります。 この課題では、最も浅い深さから最も深い深さへ向かって、各括弧の深さごとに「X」の個数を求めます。 入力例と出力例 たとえば、入力が s = (XXX(X(XX))XX) の場合、出力は [5, 1, 2] になります。 深さ0(最も外側の括弧の中)には「X」が5個 深さ1には「X」が1個 深さ2(最も内側の括弧の中)には「X」が2個 解き方のアプローチ この問題は、次の手順で解くこと