首页 > 其他分享 >重排字符串数组

重排字符串数组

时间:2022-10-05 17:37:40浏览次数:55  
标签:abc abd nil err result 数组 重排 字符串


/*

给定一系列长度相等的字符串,请对字符串进行重排,使得相邻的2个字符串之间仅有一个字符差异,请输出重排后的结果:
如果有多个解,则输出字典序的最小的解。
如果无解,则输出字符串Impossible
注:仅对字符串进行重排,每个字符串本身不能改动

输入:
第一行为整数n,表示输入字符串的行数,范围【2,20】
接下来n行字符串,字符串均为小写字符组成,且长度相同,每个字符串长度范围为【1,15】
输出:
按行输出重排后的字符串,或字符串Impossible
样例1
输入:3
gbd
abc
abd
输出:abc
abd
gdb
解释
重排后的字符串:
abc 与后一个字符串相差一个字符c
abd 与前一个字符串相差一个字符d,与后一个字符相差一个字符a
gdb 与前一个字符串相差一个字符g

["abc","abd", "gbd"], ["gdb", "abd", "abc"] 都是可行解,字典序最小为【"abc", "abd","gbd"】

样例2
输入 3
abd
abc
abd
输出
abd
abc
abd
样例3
输入 3
abde
cccc
abde
输出Impossible


* Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
* Description: 考生实现代码
* Note: 缺省代码仅供参考,可自行决定使用、修改或删除
* 只能import Go标准库
*/
package main

import (
"bufio"
"fmt"
"io"
"os"
"strings"
)

// 待实现函数,在此函数中填入答题代码
func rearrangeArray(stringInfo []string) []string {
return nil
}

func main() {
reader := bufio.NewReader(os.Stdin)
var line int
if _, err := fmt.Fscanf(reader, "%d\n", &line); err != nil {
return
}
stringInfo, err := readInputStrArrayFromNlines(reader, line)
if err != nil {
return
}

result := rearrangeArray(stringInfo)
if len(result) == 0 {
fmt.Println("Impossible")
} else {
for _, value := range result {
fmt.Println(value)
}
}

}

func readInputStrArrayFromNlines(reader *bufio.Reader, num int) ([]string, error) {
if num <= 0 {
return []string{}, nil
}
result := make([]string, 0, num)
for i := 0; i < num; i++ {
lineBuf, err := reader.ReadString('\n')
if err != nil && err != io.EOF {
return nil, err
}
lineBuf = strings.TrimRight(lineBuf, "\r\n")
lineBuf = strings.TrimSpace(lineBuf)

result = append(result, lineBuf)
}
return result, nil
}

标签:abc,abd,nil,err,result,数组,重排,字符串
From: https://www.cnblogs.com/gongxianjin/p/16755937.html

相关文章

  • 数组和函数
     数组1.概念:相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。(具有相同数据类型)2.定义:基本格式:数据类型数组名[数组大小]3.数组......
  • LCP 最长公共前缀(一个字符串中,两个位置的后缀的最长公共前缀)
    LCP也可以用来进行一个字符串的子字符串的比较需要预处理lcp[i][j]数组,表示从i开始的后缀和从j开始的后缀的最长公共前缀lcp[i][j]可以从lcp[i+1][j+1]递推过来O(n^2)预......
  • 字符串哈希 模板 例题
    字符串哈希可以快速判断两个子字符串是否相等原理:https://www.cnblogs.com/ydUESTC/p/15722400.html注意字符串哈希时后面的字符视为低位,这样方便取一段字符的哈希时先......
  • LeetCode - 字符串类型题目
    剑指Offer05.替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。方法:双指针首先统计空格数量count,然后为原字符串数组扩展出2*count的空间,用来存......
  • 多维数组
    多维数组是否存在多维数组不存在因为内存是线性一维的n维数组可以当作每个元素是n-1维数组的一维数组1inta[3][4];//该数字是含有3个元素的一维数组......
  • Demo20_与数组见一面
    //增强for循环和for循环的区别,输出numbers数组(集合)中的每一个数packagecom.HuanXin.JiBen_JieGou;publicclassDemo09_For_4{publicstaticvoidmain(String[]a......
  • 读boost::multi_array有感,多维数组实现(非类型模板,偏特化)
    开发环境:VS2002(VC7)本文做如下简化:1,假定所有维元素都是5。2,不考虑const的[]。3,由于只是熟悉原理,不考虑各种异常情况。问题一,请实现一个一维整形数组,只需重载[]。问......
  • 将容器中(数组、集合)的数据串成字符串
    开发工具VC7(VS2002)核心代码用到MFC,测试代码用到stl本代码功能,将容器中(数组、集合)的数据串成字符串核心代码和扩展代码往往不是一个人完成的。扩展代码和使用也很可能......
  • 第七章.对象数组
     //1.首先你需要直到如何创建一一个对象?    //使用字面量方式创建一个学生对象    letstudent={"name":"tom","age":23,"score":98}; ......
  • 【笨方法学python】ex6 - 字符串(string)和文本
    代码如下:点击查看代码#-*-coding:utf-8--*-#字符串(string)和文本x="Thereare%dtypesofpeople."%10binary="bianry"do_not="don't"y="Thosewh......