题目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);
}
 

 

posted @ 2022-07-14 09:06  weigm*  阅读(50)  评论(0)    收藏  举报