HUAWEI 机试题:按区间反转文章片段

🌈 Scala 实现

题目描述:

  • 输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。
  • 例如输入字符串 “I am a developer.”,区间[0,3]则输出 “developer. a am I”。

输入描述:

  • 使用换行隔开三个参数
  • 第一个参数为英文文章内容即英文字符串
  • 第二个参数为反转起始单词下标,下标从0开始
  • 第三个参数为结束单词下标,

输出描述:

  • 反转后的英文文章片段,所有单词之间以一个半角空格分割进行输出

示例

输入:

  • I am a developer.

  • 1

  • 2

输出:

  • I a am developer.

输入:

  • Hello world!
  • 0
  • 1

输出:

  • world! Hello

说明:

  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的不能包含多余空格。

输入:

  • I am a developer.
  • 0
  • 3

输出:

  • developer. a am I

说明:

  • 如果两个单词见有多余的空格,将反转后单词间的空格减少到只含一个。

输入:

  • Hello!
  • 0
  • 3

输出:

  • EMPTY

说明:

  • 指定反转区间只有一个单词,或无有效单词则统一输出EMPTY。

代码:

def main(args: Array[String]): Unit = {

    // 获取输入
    val words = StdIn.readLine().split(" ")
    val start = StdIn.readLine().toInt
    val end = StdIn.readLine().toInt

    // 去除异常情况
    if (end == start | start > words.length - 1 | end < 0 | end > words.length - 1) {

        println("EMPTY")
        return
    } else {

        // 记录字符与索引
        var tmpTrem = "-"
        var tmpIndex = end

        // 对指定区间反转
        for (i <- start to (end + start) / 2) {
            tmpTrem = words(i)
            words(i) = words(tmpIndex)
            words(tmpIndex) = tmpTrem
            tmpIndex -= 1
        }
    }

    // 输出结果
    words.toList.foreach(elem => print(s"${elem} "))
}

 


❤️ END ❤️
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JOEL-T99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值