目录
描述
输入输出示例
我的代码
描述
输入一个字符串s,s由若干个非数字的字符组成且相同的字符保证连续排列,将字符串按照下列规则进行长度压缩
将字符放前面,出现次数放后面,如果出现1次,则不需要保存次数
按照字符在s中出现的顺序输出压缩后的字符串.
输入:字符串
输出(三行):字典形式,键值对为 字符:出现次数
原字符串长度
压缩后字符串
压缩后字符串长度
abbc&&+++
{'a': 1, 'b': 2, 'c': 1, '&': 2, '+': 3}
9
ab2c&2+3
8
如果输入的s中有数字字符,直接输出‘ERROR’
输入输出示例
| 输入 | 输出 | |
| 示例 1 | abcc(((()))) | {'a': 1, 'b': 1, 'c': 2, '(': 4, ')': 4} 12 abc2(4)4 8 |
| 示例 2 | ab1 | ERROR |
我的代码
2022-5-25
删除冗余的代码,同时添加了判断字符串中是否包含数字的函数
作者:小象
链接:https://www.zhihu.com/question/502970982/answer/2251780436
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.re.search(r'd') 检查字符串是否包含数字
re.search(r'd', string) 函数扫描 string 并返回匹配对象对于与给定模式匹配的第一个位置- d,表示在 0 到 9 之间的任何数字,如果找不到匹配项,则返回 None。
import re print(re.search(r'd', "python3.8")) #output:match 对象包含 2 个元组的 span,它们是 match 的开始和结束位置,以及匹配的内容,例如 match ='3'。
bool() 函数可以将 match 对象或 None 的 re.search 结果转换为 True 或 False。
示例
import re str1 = "python12" str2 = "nonumber" str3 = "12345" print(bool(re.search(r'd', str1))) print(bool(re.search(r'd', str2))) print(bool(re.search(r'd', str3)))输出:
True False True
import re
dict = {}
ls = []
def str_digit(word):
if bool(re.search(r'd', word)) == True:
print('ERROR')
return True
else:
return False
def main():
word = input()
n = str_digit(word)
while n == False:
for key in word:
dict[key] = dict.get(key, 0) + 1
print(f'{dict}')
sum = 0
for i in dict:
sum += dict[i]
print(sum)
for key in dict:
if dict[key] == 1:
ls.append(key)
print(key, end='')
else:
print(key + str(dict[key]), end='')
ls.append(key)
ls.append(str(dict[key]))
sum_m = 0
for m in ls:
sum_m += len(m)
print(f'n{sum_m}')
break
if __name__ == "__main__":
main()
2022-05-23
import string
n = input()
dict = {}
ls=[]
if '1' in n:
print('ERROR')
else:
for key in n:
dict[key] = dict.get(key, 0) + 1
print(f'{dict}')
sum = 0
for i in dict:
sum += dict[i]
print(sum)
for key in dict:
if dict[key] == 1:
ls.append(key)
print(key,end='')
else:
print(key+str(dict[key]),end='')
ls.append(key)
ls.append(str(dict[key]))
#print(f'n{ls}')
sum_m = 0
for m in ls:
sum_m += len(m)
print(f'n{sum_m}')
#print(f'n{len(ls)}')
特别特别暴力的解法,只是过了这道题而已
用了列表来过渡,实际上直接count+=1输出也可以哈
只是自己当时写的时候不知道哪错了,第三个测试示例结果是5,然后我的是4
| 输入 | 期望输出 |
|---|---|
| abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc | {'a': 1, 'b': 31, 'c': 1} 33 ab31c 5 |
{'a': 1, 'b': 31, 'c': 1}
33
ab31c
['a', 'b', '31', 'c']#print(f'n{ls}')输出
‘’‘
列表里他把31当成一个了,实际上’3‘和’1‘是分开算的
’‘’
5



