1. 程式人生 > >[PHP] 算法-字符串的左循環的PHP實現

[PHP] 算法-字符串的左循環的PHP實現

tar sta while left code 開始 語言 匯編 art

匯編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它!
1.字符串翻轉,前n位取模長度,abc翻轉成cba 後面的翻轉成fedXYX ,然後再統一翻轉 XYZdefabc
2.第二種思路,字符串復制一份拼接在一起,截取從n開始到len長度的子字符串,n也是要取模
<?php
function LeftRotateString($str,$n){
        
$len=strlen($str); $n=$n%$len; swap($str,0,$n-1); swap($str,$n,$len-1); swap($str,0,$len-1); return $str; } function swap(&$str,$start,$end){ while($start<$end){ $temp=$str{$start}; $str{$start++}=$str{$end};
$str{$end--}=$temp; } } $a="abcAbce"; $s=LeftRotateString($a,13); var_dump($s);

[PHP] 算法-字符串的左循環的PHP實現