ffc3e03830d6fdb42f54a91b52ea018c.png

Kotlin Heroes 科特林英雄 练习赛 1 C 题 :输入的英文字符串一定是回文吗?

题目:

给你一个字符串 s 仅包含小写字母。如果它不是回文,就称它为好字符串。回文是从左至右与从右至左相同读取的字符串。例如,字符串abacabaaaz是回文,而字符串bbaxd则不是。

你可以根据需要重新排列该字符串的所有字母。你的任务是:通过重新排列给定字符串的字母来获得一个好的字符串,或者判断无法做到这一点。


要求

输入项:

第一行需要先输入一个整数 t (1≤t≤100) — 需要查询的次数; 下一行开始,需要 t 个英文字符串,长度在 1 到 1000 之间

类似:

// 输入:
3
aa
abacaba
xdd

输出项:

如果可以生成回文字符串则返回 -1;否则返回排列后的字符串; 类似:

// 输出:
-1
abaacba
xdd

分析

  • 题目要求即是,将输入的字符串重新排列,生成一个非回文字符串
  • 我们将输入的字母字符串,按 a,b,c,d,e,f,g...重新排列
  • 如果首个字母和末尾字母不相同,那即是可以组成一个非回文字符串
  • 例如,abba,可以生成 aabb,即非回文

答案

fun main() = repeat(readLine()!!.toInt()) {
    val chars = readLine()!!.toCharArray().sortedArray()
    println(if (chars.first() == chars.last()) -1 else String(chars))
}
// 输入:
// 2
// iiu
// eeee
// ----------
// 输出:
// iiu
// -1

今天的题目,大家学会了吗?

欢迎关注公众号:KnowHub 知识加油站

后续我们会持续更新有趣的题目,欢迎大家关注!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐