首页 > 解决方案 > 如何将毒刺的字母替换为另一个指定值

问题描述

我正在尝试编写一个包含字符串的句子。我想要实现的是用另一个指定的值替换刺的字母。

示例:

值:abcdefghijklmnopqrstu vwxyz

赋值:zyxwvutsrqponmlkjihgf edcba

每次在脚本上运行句子时,将“a”分配给“z”,将“b”分配给“y”。

输入:你好吗兄弟?

输出:sld ziv blf yilghvi?

我想用 PHP 编写这个脚本,请有人指出我正确的方向。

标签: phpalgorithmfunction

解决方案


片段:

function change_text($text){
   $replacement_map = array_merge(
                            array_combine( range('a','z'), range('z','a')),
                            array_combine( range('A','Z'), range('Z','A'))
                        );
   $length = strlen($text);
   for($i = 0;$i < $length; ++$i){
       if(!isset($replacement_map[ $text[$i] ])) continue; // skip characters that don't require replacing
       $text[$i] = $replacement_map[ $text[$i] ]; // replace current character with the desired one
   }

   return $text;
}



echo change_text("how are you brother?");

演示: https ://3v4l.org/D1j1c

算法:

  • 上面的代码适用于小写和大写字母。
  • 我们构建一个字母字符的映射(关联数组)及其所需的目标字符,如下所示:

映射(关联数组):

array (
  'a' => 'z',
  'b' => 'y',
  'c' => 'x',
  'd' => 'w',
  'e' => 'v',
  'f' => 'u',
  'g' => 't',
  'h' => 's',
  'i' => 'r',
  'j' => 'q',
  'k' => 'p',
  'l' => 'o',
  'm' => 'n',
  'n' => 'm',
  'o' => 'l',
  'p' => 'k',
  'q' => 'j',
  'r' => 'i',
  's' => 'h',
  't' => 'g',
  'u' => 'f',
  'v' => 'e',
  'w' => 'd',
  'x' => 'c',
  'y' => 'b',
  'z' => 'a',
  'A' => 'Z',
  'B' => 'Y',
  'C' => 'X',
  'D' => 'W',
  'E' => 'V',
  'F' => 'U',
  'G' => 'T',
  'H' => 'S',
  'I' => 'R',
  'J' => 'Q',
  'K' => 'P',
  'L' => 'O',
  'M' => 'N',
  'N' => 'M',
  'O' => 'L',
  'P' => 'K',
  'Q' => 'J',
  'R' => 'I',
  'S' => 'H',
  'T' => 'G',
  'U' => 'F',
  'V' => 'E',
  'W' => 'D',
  'X' => 'C',
  'Y' => 'B',
  'Z' => 'A',
)
  • $text现在,我们只需逐个字符循环并检查该字符是否存在于我们的地图中。如果是,我们将其替换为新的目标字符,否则保持原样并返回结果。

推荐阅读