力扣 找出最大的 N 位 K 回文数(仓颉编程语言)
【代码】力扣 找出最大的 N 位 K 回文数(仓颉编程语言)
·


//largestPalindrome
// 求最大数回文
import std.format.*
import std.math.*
import std.collection.*
import std.console.*
import std.convert.*
import std.random.*
import std.sync.*
import std.time.*
main(){
//var nums:Array<Int64> = [3,2,4]
var s=Solution()
for(数字 in 7..=7){
for(位数 in 1..=10){
println("回文 ${数字} ${位数}= ${s.制作回文(位数,数字)}")
}
}
// println("回文 = ${s.制作回文(13,5)}")
return 0
}
class Solution {
func largestPalindrome(n: Int64, k: Int64): String {
return 制作回文(n,k)
}
func 判断回文(大数: Int64):Bool{
return false
}
func 比较回文(大数: Int64,特殊数字: Int64): Int64{
if(大数 % 特殊数字 == 0){
return 大数
}
return 0
}
func 制作回文(大数: Int64 ,特殊数字:Int64):String{
// if(大数>=1){
// let c = Array<String>(大数) { i => "9" }
// // init(Array<Rune>)
// // var a="999999".toRuneArray()
// // let c = Array<Int64>(3, repeat: 0)
// var tempA =Array<String>(大数,repeat:"9")
// var cc=String.join(tempA, delimiter: "")
// // var d:String=String(a)
// return cc
// }
if(特殊数字 == 1){
//println("111111111")
return 大数字符串(大数)
}
if(特殊数字 == 3){
return 大数字符串(大数)
}
if(特殊数字 == 9){
return 大数字符串(大数)
}
if(特殊数字 == 2){
if(大数>=3){
return 按照位置替换(大数,8)
}
// return 大数字符串(大数)
}
if(特殊数字 == 4){
if(大数>=5){
return 按照位置替换(大数,88)
}
// return 大数字符串(大数)
}
if(特殊数字 == 5){
if(大数>=3){
return 按照位置替换(大数,5)
}
// return 大数字符串(大数)
}
// if(特殊数字 == 8){
// if(特殊数字>=7){
// return 按照位置替换(大数,888)
// }
// // return 大数字符串(大数)
// }
if(特殊数字 == 8){
if(大数>=7){
return 按照位置替换(大数,888)
}
// return 大数字符串(大数)
}
if(特殊数字 == 6){
if(大数> 3){
return 按位置置换特殊数字(大数,8,77,8)
}
//return 大数字符串(大数)
}
if(特殊数字 == 7){
if(大数> 0){
return 数字7回文(大数,特殊数字)
}
//return 大数字符串(大数)
}
var 大数字符串:String=""
if(大数 % 2 ==0){
for(_ in 0..大数){
大数字符串="${大数字符串}"+"9"
}
while(Int64.parse(大数字符串) % 特殊数字!=0&& Int64.parse(大数字符串)>0){
大数字符串= 回文的一半双数(大数字符串)
}
//println("回文 = ${大数字符串}")
}else {
for(_ in 0..大数){
大数字符串="${大数字符串}"+"9"
}
while(Int64.parse(大数字符串) % 特殊数字!=0&& Int64.parse(大数字符串)>0){
大数字符串= 回文一半单数(大数字符串)
}
// println("回文 = ${大数字符串}")
}
return 大数字符串
}
func 回文的一半双数(大数字符串: String):String{
var 半个回文:Array<Rune> =大数字符串.toRuneArray()
var 半个:String =""
for(甲 in 半个回文.size-1..=半个回文.size/2:-1){
// println(甲)
半个="${半个.toString()}${半个回文[甲]}"
// println(半个)
}
var 临时数字:Int64 =Int64.parse(半个)-1
//println(临时数字)
半个回文=临时数字.toString().toRuneArray()
半个= ""
for(甲 in 半个回文.size-1..=0:-1){
半个="${半个.toString()}${半个回文[甲]}"
}
var 一个:String =临时数字.toString()+半个
return 一个
}
func 回文一半单数(大数字符串: String):String{
var 半个回文:Array<Rune> =大数字符串.toRuneArray()
var 半个:String =""
for(甲 in 半个回文.size-1..=半个回文.size/2:-1){
// println(甲)
半个="${半个.toString()}${半个回文[甲]}"
// println(半个)
}
var 临时数字:Int64 =Int64.parse(半个)-1
// println(临时数字)
半个回文=临时数字.toString().toRuneArray()
半个= ""
for(甲 in 半个回文.size-2..=0:-1){
// println("甲 = ${甲}")
半个="${半个.toString()}${半个回文[甲]}"
}
var 一个:String =临时数字.toString()+半个
return 一个
}
func 按照位置替换(位数:Int64, 替换数:Int64):String{
//var 原数数组:Array<Rune>=原数.toString().toRuneArray()
// var 替换数数组:Array<Rune>=替换数.toString().toRuneArray()
var 回文:String=替换数.toString()
for(甲 in 0..位数-替换数.toString().size*2){
回文= 回文+"9"
}
回文=回文+替换数.toString()
return 回文
}
func 大数字符串(位数:Int64 ):String{
// var 大数字符串:String =""
var tempA =Array<String>(位数,repeat:"9")
var 大数字符串=String.join(tempA, delimiter: "")
// for(_ in 0..位数){
// 大数字符串=大数字符串+"9"
// }
return 大数字符串
}
func 按位置置换特殊数字(位数:Int64,单数:Int64,双数:Int64, 两边:Int64):String{
var 大数字符串数字:String = ""
if(两边>=0){
大数字符串数字 = 两边.toString()
}
if(位数 % 2 ==0){
if(两边>=0){
大数字符串数字 = 大数字符串数字+大数字符串((位数/2-双数.toString().size/2)-(两边.toString().size))
// for(甲 in 两边.toString().size..位数/2-双数.toString().size/2){
// 大数字符串 = 大数字符串+"9"
// }
大数字符串数字 = 大数字符串数字 + 双数.toString()
大数字符串数字 = 大数字符串数字+大数字符串((位数-两边.toString().size)-(位数/2+双数.toString().size-1))
// for(甲 in 位数/2+双数.toString().size-1..位数-两边.toString().size){
// 大数字符串数字 = 大数字符串数字 + "9"
// }
if(两边>=0){
大数字符串数字 = 大数字符串数字 + 两边.toString()
}
}else{
//println("两边小于0 ${位数}")
大数字符串数字 = 大数字符串数字+大数字符串(位数/2-双数.toString().size/2)
// for(甲 in 0..位数/2-双数.toString().size/2){
// 大数字符串数字 = 大数字符串数字+"9"
// }
大数字符串数字 = 大数字符串数字 + 双数.toString()
大数字符串数字 = 大数字符串数字+大数字符串((位数)-(位数/2+双数.toString().size-1))
// for(甲 in 位数/2+双数.toString().size-1..位数){
// 大数字符串数字 = 大数字符串数字 + "9"
// }
if(两边>=0){
大数字符串数字 = 大数字符串数字 + 两边.toString()
}
}
return 大数字符串数字
}else {
if(两边>=0){
大数字符串数字 = 大数字符串数字+大数字符串((位数/2-单数.toString().size/2)-(两边.toString().size))
// for(甲 in 两边.toString().size..位数/2-单数.toString().size/2){
// 大数字符串数字 = 大数字符串数字+"9"
// }
大数字符串数字 = 大数字符串数字 + 单数.toString()
大数字符串数字 = 大数字符串数字+大数字符串((位数/2-单数.toString().size/2)-(两边.toString().size))
// for(甲 in 两边.toString().size..位数/2-单数.toString().size/2){
// 大数字符串数字 = 大数字符串数字 + "9"
// }
if(两边>=0){
大数字符串数字 = 大数字符串数字 + 两边.toString()
}
}else{
大数字符串数字 = 大数字符串数字+大数字符串(位数/2-单数.toString().size/2)
// for(甲 in 0..位数/2-单数.toString().size/2){
// 大数字符串数字 = 大数字符串数字+"9"
// }
大数字符串数字 = 大数字符串数字 + 单数.toString()
大数字符串数字 = 大数字符串数字+大数字符串(位数/2-单数.toString().size/2)
// for(甲 in 0..位数/2-单数.toString().size/2){
// 大数字符串数字 = 大数字符串数字 + "9"
// }
if(两边>=0){
大数字符串数字 = 大数字符串数字 + 两边.toString()
}
}
return 大数字符串数字
}
return 大数字符串数字
}
func 数字7回文(位数:Int64, 特殊数字:Int64):String {
var 位置:Int64 = 位数 % 6
var 偏移:Int64 = (位数/6) % 2
// println(位置)
//println(偏移)
if(位置 == 1 && 偏移 == 0){
return 按位置置换特殊数字(位数,7,-1,-1)
} else if(位置 == 1 && 偏移 == 1){
return 按位置置换特殊数字(位数,4,-1,-1)
}
if(位置 == 2 && 偏移 == 0){
return 按位置置换特殊数字(位数,-1,77,-1)
} else if(位置 == 2 && 偏移 == 1){
//println("222222222")
return 按位置置换特殊数字(位数,-1,44,-1)
}
if(位置 == 3 && 偏移 == 0){
return 按位置置换特殊数字(位数,5,-1,-1)
} else if(位置 == 3 && 偏移 == 1){
return 按位置置换特殊数字(位数,6,-1,-1)
}
if(位置 == 4 && 偏移 == 0 ){
return 按位置置换特殊数字(位数,-1,77,-1)
} else if(位置 == 4 && 偏移 == 1){
return 按位置置换特殊数字(位数,-1,44,-1)
}
if(位置 == 5 && 偏移 == 0){
return 按位置置换特殊数字(位数,7,-1,-1)
} else if(位置 == 5 && 偏移 == 1){
return 按位置置换特殊数字(位数,4,-1,-1)
}
if(位置 == 0){
return 大数字符串(位数)
}
return 大数字符串(位数)
}
}
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐


所有评论(0)