<?php //使用PHP语言,使函数LetterChanges(str) //获得传递的str参数并使用以下算法对其进行修改。 //将字符串中的每个字母替换为字母后面的字母(即 c变成d,z变成a)。 //然后在这个新字符串(a,e,i,o,u)中大写每个元音,最后返回这个修改过的字符串。 //Input:"hello*3" // //Output:"Ifmmp*3" // // //Input:"fun times!" // //Output:"gvO Ujnft!" /** * 测试写的 * @param $str * @return string */ function LetterChanges($str) { $arr = str_split($str); // 将str分割成一个数组 $newArr = []; foreach ($arr as $val) { if (ctype_alpha($val)) { $newArr [] = ord($val)+1; } else { $newArr [] = $val; } } $str = ''; foreach ($newArr as $v) { switch ($v) { case 97 : $str .= chr($v-32); break; case 101 : $str .= chr($v-32); break; case 105 : $str .= chr($v-32); break; case 111 : $str .= chr($v-32); break; case 117 : $str .= chr($v-32); break; default: if (is_numeric($v) && $v > 65) { $str .= chr($v); } else { $str .= $v; } } } return $str; } /** * No.1 code * @param $str * @return string */ function LetterChanges1($str) { $arr = str_split($str); $let = range("a","z"); $vow = array('a', 'e', 'i', 'o', 'u'); foreach($arr as $key => $value){ if(in_array($value,$let)){ // 判断value是否在a-z范围 // 如果value=z,将value=a,字符串加减会自动转换成对应的ascii码值加减 $arr[$key] = $value=='z' ? 'a' : ++$value; if(in_array($arr[$key],$vow)){ // 如果数组内字母包含在元音字母数组中 $arr[$key] = strtoupper($arr[$key]); // 就将该字母变成大写 } } else { $arr[$key] = $value; } } // code goes here return join("",$arr); // 将数组转换成字符串 } /** * No.2 code * @param $str * @return mixed */ function LetterChanges2($str) { // code goes here $l = strlen($str); // 获取字符串的长度 for($i=0; $i<$l; $i++) { $c = ord($str[$i]); // 判断字母是不是在a-z|A-Z的范围内 if(($c >= ord('a') && $c < ord('z')) || ($c >= ord('A') && $c < ord('Z'))) $c++; // 如果加一后的ascii值等z的ascii的值,c的值等于a else if($c == ord('z')) $c = ord('a'); else if($c == ord('Z')) $c = ord('A'); $c = chr($c);// 将ascii值转换成字母 if(in_array($c, ['a','e','i','o','u'])) // 判断字母是不是元音字母 $c = strtoupper($c); // 将字母转换成大写 $str[$i] = $c; // 动态添加到数组 } return $str; } /** * 看完No.1 No.2 写的 * @param $str * @return string */ function myCode ($str) { $arr = str_split($str); foreach ($arr as $key => $val) { $arr[$key] = ($val == 'z') ? 'a' : (($val == 'Z') ? 'A' : ++$val); if (in_array($arr[$key], ['a','e', 'i', 'o', 'u'])) { $arr[$key] = strtoupper($arr[$key]); } } return implode('', $arr); } /** * 改测试时写的 * @param $str * @return string */ function myCode2($str) { $arr = str_split($str); // 将str分割成一个数组 $newArr = []; foreach ($arr as $val) { $val = $val == 'z' ? 'a' : ($val == 'Z' ? 'A' : $val); if (ctype_alpha($val)) { ++$val; if (in_array($val, ['a', 'e', 'i', 'o', 'u'])) { $newArr [] = strtoupper($val); } else { $newArr [] = $val; } } else { $newArr [] = $val; } } return join('', $newArr); } //var_dump( LetterChanges('fun times!')); //var_dump( LetterChanges2('fun times!')); //var_dump( LetterChanges1('fun times!')); echo myCode2('fun times!');