php 算出延续重复的子字符串
php 算出连续重复的子字符串
上次突然想到了一道算法题,题目如下:一个字符串,算出重复且长度最长的子字符串。下面是我写的算法,基本思想是先求出重复的字符串,组成一个数组,在求出该数组每个元素的长度组成一个新的数组,在拆分新的数组,以长度为元素又组成一个新的数组,算出最大值,根据有长度的那个数组每个元素是否有最大值算出该子字符串。
<?phpheader ( "content-type:text/html;charset=utf-8" );/** * 给一个字符串计算出长度最长的子字符串 * * @author lxy * */class maxstr { private function __construct() { } /** * 筛选出有连续重复的子字符串 * * @param String $str * @return Array */ private static function strtoarr($str) { $nwearray = array (); $oldarray=array(); $newstr = ""; for($i = 0; $i < strlen ( $str ) - 1; $i ++) { $newstr = ""; for($j = $i + 1; $j < strlen ( $str ); $j ++) { if ($str [$i] == $str [$j]) { $newstr .= $str [$j]; } else { break; } } if (strlen ( $newstr ) > 0) { $newstr .= $str [$i]; $e = strlen ( $newstr ); $i = $i + $e - 1; $oldarray [] = $newstr; } } return $oldarray; } /** * 筛选出长度最长的子字符串 * * @param String $str * @return Array */ private static function maxlenth($str) { $oldarray = self::strtoarr ( $str); if(empty($oldarray)){ echo "对不起您没有重复的子字符串"; return false; } $lastarray = array (); $newlenarray = array (); foreach ( $oldarray as $val ) { $newarray [] = $val . '@' . strlen ( $val ); } foreach ( $newarray as $value ) { $numarr = explode ( '@', $value ); $numar [] = $numarr [1]; } $maxlength = max ( $numar ); foreach ( $newarray as $valu ) { $varray = explode ( '@', $valu ); if (array_search ( $maxlength, $varray )) { $lastarray [] = $varray [0]; } } return $lastarray; } /** * 入口文件 * * @param String $str * @return Array */ public static function main($str) { $newstr = self::maxlenth ( $str ); return $newstr; }}$str = "aaaeeeeebbbbcd";$newstr = maxstr::main ( $str );print_r ( $newstr );

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C 言語における return の使い方は、 1. 戻り値の型が void の関数については、return 文を使用して関数の実行を早期に終了することができます; 2. 戻り値の型が void ではない関数については、 return ステートメントは、関数の実行を終了するためのものです。結果は呼び出し元に返されます。 3. 関数の実行を早期に終了します。関数内で return ステートメントを使用して、関数の実行を早期に終了することもできます。関数が値を返さない場合。

ソースコード: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#出力 上記のコードの出力は、単純に次のように結論付けることができます:finally の前に return が実行されます。バイトコード レベルで何が起こるかを見てみましょう。以下は、case1 メソッドのバイトコードの一部をインターセプトし、ソース コードを比較して、各命令の意味に注釈を付けます。

タイトル: Array.Sort 関数を使用して C# で配列を並べ替える例 本文: C# では、配列は一般的に使用されるデータ構造であり、多くの場合、配列を並べ替える必要があります。 C# には Array クラスが用意されており、このクラスには配列を簡単に並べ替えるための Sort メソッドがあります。この記事では、C# で Array.Sort 関数を使用して配列を並べ替える方法を示し、具体的なコード例を示します。まず、Array.Sort 関数の基本的な使用法を理解する必要があります。 Array.So

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

PHP でプログラミングする場合、多くの場合、配列をマージする必要があります。 PHP には、配列のマージを完了するための array_merge() 関数が用意されていますが、配列内に同じキーが存在する場合、この関数は元の値を上書きします。この問題を解決するために、PHP は配列をマージして同じキーの値を保持できる array_merge_recursive() 関数を言語で提供し、プログラム設計をより柔軟にします。配列マージ

PHP には、配列操作をより便利かつ高速にする強力な配列関数が多数あります。 2 つの配列を結合して連想配列にする必要がある場合、PHP の array_combine 関数を使用してこの操作を実行できます。この関数は、実際には、ある配列のキーを別の配列の値として新しい連想配列に結合するために使用されます。次に、PHP の array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法を説明します。 array_comb について学ぶ

Vue3.2 セットアップ構文シュガーは、単一ファイル コンポーネント (SFC) で結合された API を使用して、Vue3.0 の面倒なセットアップを解決するコンパイル時構文シュガーです。宣言された変数、関数、インポートによって導入されたコンテンツは、インポートによって公開されます。使用上の問題点 1. 宣言した変数、関数、import で導入した内容を使用中に return する必要はなく、糖衣構文を使用することができます。 // 導入した内容をインポート import{getToday }from'./utils'//variable constmsg='Hello !'//function func

JavaScript での return の使用には特定のコード例が必要です。 JavaScript では、return ステートメントを使用して関数から返される値を指定します。関数の実行を終了するために使用できるだけでなく、関数が呼び出された場所に値を返すこともできます。 return ステートメントには次の一般的な用途があります。 値を返す return ステートメントは、関数が呼び出された場所に値を返すために使用できます。簡単な例を次に示します。 functionadd(a,b){
