马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述:
给定非空字符在s,将该字符串分割成一些子串,使每个子串的ASCIIA码值的和均为水仙花数。
1、若分割不成功则返回 0
2、若分割成功且分割结果不唯一则返回-1
3、若分割成功且分割结果唯一,则返回分割后的子串数目
输入描述: 1、输入字符串的最大长度为 200
输出描述:根据题目描述中情况返回相应的结果
备注:“水仙花数”是指一个三位数,每位上数字的立方和等于该数字本身,如 371是“水仙花数”,因为:371=3^3+7^3+1^3。
示例:
输入
abc
输出
0
我写的代码如下,找了一个符合题目的可将字符串分割为两端,字母的ASCII码之和为水仙花数字,但是输出显示的是0。
上了一天班头晕脑胀的,不想再继续想了,所以想请教一下兄弟们:
1. 我的代码哪里出了问题?为什么不能正确输出“1”?
2. 如何判定结果是否唯一,然后返回相应数字?def Str_sli(str):
def Nar_Num(num):
Ge = num % 10
Shi = num // 10 % 10
Bai = num % 100
if num == Ge ** 3 + Shi ** 3 + Bai ** 3:
return True
else:
return False
length = len(str)
j = 0
str_num = 0
for i in range(length):
str_num += ord(str[i])
if Nar_Num(str_num):
str = str[(i+1):]
i = 0
j += 1
else:
i += 1
if str == '':
print(j)
else:
print(0)
if __name__ == '__main__':
Str_sli('LMkdce')
|