题目0007
题目描述:
输入一个英文文章片段,
翻转指定区域的单词顺序,
标点符号和普通字母一样处理,
例如输入字符串I am a developer.
[0,3]
则输出developer. a am I
输入描述
使用换行隔开3个参数
第一个参数为文章内容 即英文字符串
第二个参数为翻转起始单词下标,下标从0开始
第三个参数为结束单词下标
输出描述
翻转后英文文章片段每个单词之间以一个半角空格分割输出
输入
I am a developer.
0
3
输出
developer. a am I
PHP代码:
<?php $line=fgets(STDIN); $l=fgets(STDIN); $r=fgets(STDIN); solution($line,$l,$r); function solution($line,$l,$r){ $words=explode(' ',$line); $w=[]; $new_word=$words; for($i=$l;$i<$n=$r>count($words)?count($words):$r;$i++){ $w[]=$words[$i]; unset($new_word[$i]); } $w=array_reverse($w); $new=array_merge($new_word,$w); echo implode(' ',$new); }
//另一种方法
function solution($line,$l,$r){
$words=explode(' ',$line);
$r=$r>count($words)?count($words)-1:$r;
if(count($words)==0||$l<0||$r-$l<=0) echo 'EMPTY';
while($l<$r){
$tmp=$words[$l];
$words[$l]=$words[$r];
$words[$r]=$tmp;
$l++;
$r--;
}
echo implode(' ',$words);
}