先按题意把整数 N 转成混合进制编码数组,再把数组映射成字符串,最后判断是否为回文;若不是,则求最长回文子串。
核心分为三步:
某快递公司的包裹编号系统采用混合进制编码,以高效分配和分拣包裹。每个包裹的编号由多个部分组成,每个部分对应不同的分层层级,且使用不同的进制表示:
任务:给定一个十进制整数 N(可为负数)和一组进制 bases(从高位到低位的顺序),进行符号位和混合进制编码的计算,最后按照要求输出转换后的包裹编码字符串,具体规则如下:
1.符号位:若 N 为负数,编码的第一个元素为 1,其余部分为 ∣N∣(N 的绝对值)的混合进制编码。
若 N 为非负数,编码的第一个元素为 0,其余部分为 N 的混合进制编码。
2.混合进制编码:
按输入的 bases 顺序,从高位到低位依次处理各个层级。
计算方式为:上一级的商除以本级 base 的余数,第一层级用 N 作为初始商。
例如,N=101,bases=[5,7,3],计算过程如下:
101÷5=20余1
20÷7=2余6
2÷3=0余2
计算结果为:[0,1,6,2](符号位 0 + 编码 [1,6,2])。
3.最终输出需要将编码转换为 a−z 的字符串,并进行回文检测:
(1) 编码 0 转换为字母 a,编码 1 转换为字母 b,依次类推编码 25 转换为字母 z。
(2) 如果最终输出的字符串是回文字符串,则在输出字符串后添加 (palindrome)。
(3) 如果最终输出的字符串不是回文字符串,则输出最长的回文子串,若最长回文子串存在多个则按照字典序排序最小的。
第一行:整数 N(−106≤N≤106)
第二行:m 个整数,表示进制序列 bases(1≤m≤10,2≤base≤26)
转换后包裹编码字符串
输入
-21
5 7 3
输出
bb
说明
混合进制编码结果为:[1,1,4,0],编码后的结果为 bbea。
由于 bbea 不是回文字符串,所以输出最长回文子串 bb。
输入
0
5 7 3
输出
aaaa(palindrome)
说明
混合进制编码结果为:[0,0,0,0],
编码后的结果为 aaaa。
由于 aaaa 是回文字符串,在输出字符串后添加 (palindrome),最终结果为 aaaa(palindrome)。