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 Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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;}}}# 출력 위 코드의 출력은 간단히 결론을 내릴 수 있습니다. return은 finally 전에 실행됩니다. 바이트코드 수준에서 무슨 일이 일어나는지 살펴보겠습니다. 다음은 case1 메소드의 바이트코드 일부를 가로채서 소스 코드를 비교하여 각 명령어의 의미를 주석으로 표시합니다.

제목: Array.Sort 함수를 사용하여 C#에서 배열을 정렬하는 예 텍스트: C#에서는 배열이 일반적으로 사용되는 데이터 구조이므로 배열 정렬 작업이 필요한 경우가 많습니다. C#에서는 배열을 편리하게 정렬할 수 있는 Sort 메서드가 있는 Array 클래스를 제공합니다. 이 문서에서는 C#에서 Array.Sort 함수를 사용하여 배열을 정렬하는 방법을 보여주고 구체적인 코드 예제를 제공합니다. 먼저 Array.Sort 함수의 기본 사용법을 이해해야 합니다. 배열.그래서

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

PHP로 프로그래밍할 때 배열을 병합해야 하는 경우가 종종 있습니다. PHP는 배열 병합을 완료하기 위해 array_merge() 함수를 제공하지만, 배열에 동일한 키가 존재할 경우 이 함수는 원래 값을 덮어씁니다. 이 문제를 해결하기 위해 PHP는 배열을 병합하고 동일한 키의 값을 유지할 수 있는 array_merge_recursive() 함수도 언어에 제공하여 프로그램 설계를 더욱 유연하게 만듭니다. array_merge

PHP에는 배열 작업을 더욱 편리하고 빠르게 만들어주는 강력한 배열 함수가 많이 있습니다. 두 배열을 연관 배열로 결합해야 하는 경우 PHP의 array_combine 함수를 사용하여 이 작업을 수행할 수 있습니다. 이 함수는 실제로 한 배열의 키를 다른 배열의 값으로 새로운 연관 배열로 결합하는 데 사용됩니다. 다음으로 PHP에서 array_combine 함수를 사용하여 두 배열을 연관 배열로 결합하는 방법을 설명하겠습니다. array_comb에 대해 알아보기

Vue3.2 설정 구문 설탕은 Vue3.0의 번거로운 설정을 해결하기 위해 단일 파일 구성 요소(SFC)에서 결합된 API를 사용하는 컴파일 타임 구문 설탕입니다. 사용 중 문제점 1. 사용 중에 import로 도입된 선언된 변수, 함수 및 컨텐츠를 반환할 필요가 없습니다. //소개된 컨텐츠 가져오기 import{getToday. }from'./utils'//변수 constmsg='안녕하세요!'//함수 func

JavaScript에서 return을 사용하려면 특정 코드 예제가 필요합니다. JavaScript에서 return 문은 함수에서 반환되는 값을 지정하는 데 사용됩니다. 함수 실행을 종료하는 데 사용할 수 있을 뿐만 아니라 함수가 호출된 위치에 값을 반환할 수도 있습니다. return 문에는 다음과 같은 일반적인 용도가 있습니다. 값 반환 return 문은 함수가 호출된 위치에 값을 반환하는 데 사용할 수 있습니다. 다음은 간단한 예입니다: functionadd(a,b){
