牛客网
题目描述:给定一个字符串str,返回str的统计字符串。例如“aaabbbbcccd”的统计字符串为“a_3_b_4_c_3_d_1”。
输入字符长度都大于1
解题思路:
1.第一种方法输入的是"aaa\n"这种字符。因此我们将当前字符cur指向首字符,从1- 字符串长度的范围内开始遍历判断当前字符cur是否与遍历的字符n[i]相等,如果相等的话count+1记录重复字符的数量。如果不等则记录前边重复字符+""+count+"",在不相等的时候还有一种情况就是当遍历到字符串最后一位的时候。后边不加“_”.因为sys.stdin输入的字符串后面自带一个反斜杠n字符因此我们不需要再加其他语句就可以运行。
2.第二种方法输入的是“aaa”这种标准输入当运行第一个程序输出结果错误,因为一直运行 第一个if语句。不能够执行后面的else所以输出为空。因此需要执行第二种方法。
3. 解释的可能不是特别好,请担待。
def count_str(n):
cur = n[0]
count = 1
new_str = ""
s = 0
for i in range(1,len(n)):
if n[i] == cur:
count +=1
else:
if i == len(n)-1:
new_str =new_str +str(cur)+"_"+str(count)
else:
new_str =new_str +str(cur)+"_"+str(count)+"_"
cur = n[i]
count = 1
print(new_str,end="")
import sys
str_n = sys.stdin
for line in str_n:
count_str(line)
def count_str4(n):
cur = n[0]
n= n.strip()
count = 1
new_str = ""
s = 0
for i in range(1, len(n)):
if n[i] == cur:
count += 1
else:
new_str = new_str + str(cur) + "_" + str(count) + "_"
cur = n[i]
count = 1
new_str = new_str + str(cur) + "_" + str(count)
print(new_str, end="")
import sys
str_n = sys.stdin
for line in str_n:
count_str4(line)