字符循环左移问题也就是翻手算法,以下是我用PHP写的。
<?php
/*** 翻转字符串,翻转制定范围的字符。
* @param string $str 待翻转的字符串
* @param int $m 待翻转的子字符串的起始位置。
* @param int $n 待翻转的子字符串的结束位置。
* @return string 翻转后的字符串
*/
function reverse($str, $m, $n){
$tmp = '';
while($m < $n){
$tmp = $str[$m];
$str[$m] = $str[$n];
$str[$n] = $tmp;
$m++;
$n--;
}
return $str;
}
/**
* 字符串向左移动n个字符。即左边n个字符移到最右边。
* @param string $str 待移动的字符串。
* @int int $i 移动字符数量
*/
function rotateLeft($str, $i){
$strlen = strlen($str);
$str = reverse($str,0,$i-1);
$str = reverse($str,$i,$strlen-1);
$str = reverse($str,0,$strlen-1);
return $str;
}
$str = 'ABCDEFGHIJKLMN';
$str = rotateLeft($str, 3);
echo $str;

1072

被折叠的 条评论
为什么被折叠?



