/**
* @author beggar 770793038@qq.com
* @param type $string
* @param type $m
* @return boolean
*/
function reverseStr(&$string, $m){
if(empty($string)){
return false;
}
$len = strlen($string);
$begin = 0;
$end = $m-1;
reverseSting($string, $begin, $m-1);
reverseSting($string, $m, $len-1);
reverseSting($string, 0, $len-1);
}
function reverseSting(&$string, $begin, $end){
if($begin >= 0 && $end > 0){
while ($begin < $end){
$temp = $string[$begin];
$string[$begin] = $string[$end];
$string[$end] = $temp;
$begin++;
$end--;
}
}
}
function reverseString(&$string, $m){
if(empty($string)){
return false;
}
$len = strlen($string);
$mod = $len%$m;
$currentLen = $len-$mod - $m;
$pos01 = 0;
$pos02 = $m;
while($currentLen--){
$temp = $string[$pos01];
$string[$pos01] = $string[$pos02];
$string[$pos02] = $temp;
$pos01++;
$pos02++;
}
while($mod--){
$i = $pos02;
while($i > $pos01){
$temp = $string[$i];
$string[$i] = $string[$i-1];
$string[$i-1] = $temp;
$i--;
}
$pos02++;
$pos01++;
}
}
$str = 'abcdefgh';
reverseString($str, 3);
echo $str;
时间复杂度为O(n)