leetcode-482. 密钥格式化


leetcode

题目

482. 密钥格式化

解法

用了很多 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 自带函数的性能比较高