leetcode
题目
解法
用了很多 php 的函数,但是思想就是几个步骤
- 将源字符串的
-
去掉 - 从后往前遍历字符串,每
$k
个字符一组,拼接上-
字符
class Solution {
/**
* @param String $s
* @param Integer $k
* @return String
*/
function licenseKeyFormatting($s, $k) {
$s = str_replace('-', '', $s);
$s = strrev($s);
$arrStr = str_split($s, $k);
foreach ($arrStr as &$item) {
$item = strtoupper(strrev($item));
}
$arrStr = array_reverse($arrStr);
return implode('-', $arrStr);
}
}
一次遍历的方式:
class Solution {
/**
* @param String $s
* @param Integer $k
* @return String
*/
function licenseKeyFormatting($s, $k) {
$len = strlen($s);
$curLen = 0;
$ret = '';
for ($i = $len - 1; $i >= 0; $i--) {
if ($s[$i] == '-') {
continue;
}
if ($curLen != 0 && $curLen % $k == 0) {
$ret = '-' . $ret;
}
$ret = strtoupper($s[$i]) . $ret;
$curLen++;
}
return $ret;
}
使用 php
自带函数的性能比较高