Delphiにおける正規表現の実装と応用

利用するユニット: uses System.RegularExpressions; 1. TRegEx.Matchメソッドの利用 Match()メソッドは、条件に一致する最初の要素のみを取得し、他の一致要素の存在に関わらず動作します。 このメソッドはMatchオブジェクトを返却し、一致に関する詳細情報を保持しています。 Match()メソッドの基本的な使用法: var foundMatch: TMatch; begin foundMatch := T ...

8月16日 03:58 投稿

K差分構成問題の解法

問題概要 長さ n の 01 文字列 s が与えられる。一部の文字は ? となっており、これらを 0 または 1 に置き換える必要がある。 良い配置とは、1 ≤ i < n を満たす異なる i がちょうど m 個存在し、かつ s[i] ≠ s[i+1] となるものをいう。 すべての良い配置の中で辞書順最小のものを求めよ。解が存在しない場合は Impossible を出力せよ。 解法 まず、現在の文字列におけ ...

7月25日 23:01 投稿

C ラングージにおけるポインタ操作と文字列処理の実践ガイド

ポインタによるデータ範囲の解析 メモリアドレスを直接扱うことで、関数呼び出し内で変数の状態を変更する手法について確認します。ここでは、整数配列から最小値と最大値を取得する処理を実装し、参照渡しの仕組みを理解します。 #include <stdio.h> #include <stdlib.h> #define DATA_SIZE 5 void read_data(int target_array[], int count); void print_ ...

7月22日 23:08 投稿

スタック構造を活用したアルゴリズム問題の解法集

1. 隣接する重複文字の削除 問題概要 文字列内で連続する同じ文字をすべて削除した結果を返します。 解法のポイント 各文字を順番に確認し、直前の文字と比較して同じであれば削除、異なれば保持します。この操作はスタックの「後入れ先出し」特性と一致します。実際にスタックオブジェクトを使用すると最終的な文字列構築が面倒なため、配列を使ってスタック動作をシミュ ...

7月19日 18:51 投稿

Pythonで最も長い回文部分文字列を検索する方法

問題定義 最も長い回文部分文字列とは、対称的な構造を持つ文字列のことです。例えば、文字列 s = "ababd" の場合、"aba" や "bab" が回文として該当します。 解決方針 最初の考えでは、括弧のマッチングのようなアプローチを使用し、スタックで要素を「ペア消去」することで回文を判定しようと考えました。しかし実際には「対称軸」の位置が固定されておらず、前方の消 ...

6月6日 21:19 投稿

コーディングテスト演習(一)——Codeforces 784B Santa Claus and Keyboard Check

はじめに 最近、コーディングテストの準備をしており、練習問題をまとめています。 元々はC言語の経験しかありませんでしたが、実際に使用会发现C++の方がテストに向いています。ライブラリ関数も豊富で、より多くの操作をサポートでき、コードを簡潔に記述できます。 例えば、C言語で文字列を定義するにはchar s[1000]が必要ですが、C++ではstring sだけで済みます。 問 ...

5月29日 16:25 投稿