import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
* 要求写一个函数返回该参数中连续相同字母的最大个数及该字母,
* 如果最大位数有多个,则返回第一个。
* 例:字符串"aaaddxxxxddddxxxxrrrrhhhhsss",返回值为:"x=>4"。
*
*/
public class MaxLengthChars {
public static String maxLength(String str) {
Pattern pattern = Pattern.compile("(.)\\1+");
Matcher matcher = pattern.matcher(str);
String maxLenStr = "";
while (matcher.find()) {
String substr = matcher.group();
if (substr.length() > maxLenStr.length()) {
maxLenStr = substr;
}
}
return maxLenStr.length() > 0 ? maxLenStr.substring(0, 1) + "=>" + maxLenStr.length() : "";
}
public static void main(String[] args) {
System.out.println(maxLength("aaaddxxxxddddxxxxrrrrhhhhsss"));
}
}
PHP
<?php
/**
* 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
* 要求写一个函数返回该参数中连续相同字母的最大个数及该字母,
* 如果最大位数有多个,则返回第一个。
* 例:字符串"aaaddxxxxddddxxxxrrrrhhhhsss",返回值为:"x=>4"。
*
*/
function MaxLengthChars($str) {
if (empty($str)) return '';
$maxLenStr = '';
$tempArray = array();
if(preg_match_all("/([a-zA-Z])\\1*/", $str, $match)) {
$pregStr = $match[0];
foreach($pregStr as $val) {
$currentLenStr = $val;
if (strlen($currentLenStr) > strlen($maxLenStr)) {
$maxLenStr = $currentLenStr;
}
}
return strlen($maxLenStr) > 0 ? substr($maxLenStr,0,1)."=>".strlen($maxLenStr) : "";
} else {
return '';
}
}
$str = "aaaddxxxxddddxxxxrrrrhhhhsss";
echo MaxLengthChars($str);
?>
控制台结果:
x=>4