如果统计的个数相同,则按照ASCII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。 实现以下接口: 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用) 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出 清空目前的统计结果,重新统计 调用者会保证: 输入的字符串以‘\0’结尾。
输入一串字符。
对字符中的 各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
代码实现如下:
from collections import defaultdict while True: try: dd, s, res = defaultdict(list), input(), "" for c in set(s): # if c.isascii(): # dd[s.count(c)].append(c) if c.isalnum() or c == ' ': dd[s.count(c)].append(c) for i in sorted(dd.keys(), reverse=True): res += "".join(sorted(dd[i], key=ord)) print(res) except: break编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
输入
abaca
输出
3
输入描述: 输入N个字符,字符在ACSII码范围内。
输出描述: 输出范围在(0~127)字符的个数。
输入:abc 输出:3
代码实现如下:
while True: try: res = [] for i in input(): acs = ord(i) if acs >= 0 and acs <= 127: res.append(i) print(len(set(res))) except: break样例输出 输出123058789,函数返回值9 输出54761,函数返回值5 接口说明 函数原型: unsignedint Continumax(char** pOutputstr, char* intputstr) 输入参数: char* intputstr 输入字符串; 输出参数: char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串;如果输入字符串是空,也应该返回空字符串; 返回值: 连续最长的数字串的长度
输入一个字符串。
输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度
解法1
import re while True: try: string, res, arr = input(), '', [] if string == '': res = '' arr = re.findall('\d+', string) if len(arr) > 0: max_l = len(max(arr, key=len)) res = ''.join(filter(lambda x:len(x) == max_l, arr)) + ',' + str(max_l) else: res = '' print(res) except: break解法2
while True: try: a = input() maxLen, maxStrs, curLen, curStr = 0, [], 0, "" for v in a: if v.isnumeric(): curLen += 1 curStr += v if curLen > maxLen: maxLen = curLen maxStrs = [curStr] elif curLen == maxLen: maxStrs.append(curStr) else: curLen = 0 curStr = "" print("".join(maxStrs) + "," + str(maxLen)) except: break查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
解题思路:
1、获得遍历的字符串(即输入字符串中最短的字符串)
2、从第i个字符开始往后依次取出子串(覆盖了所有的子串)
解法1
while True: try: str_A, str_B, max_len, res = input(), input(), 0, '' string = str_A if len(str_A) < len(str_B) else str_B for i in range(len(string)): for j in range(1, len(string) - i + 1): sub = string[i:i + j] if len(sub) > max_len and str_A.find(sub) >= 0 and str_B.find(sub) >= 0: max_len = len(sub) res = sub print(res) except: break解法2
while True: try: a, b = input(), input() short_str = a if len(a) <= len(b) else b long_str = b if len(short_str) == len(a) else a max_len, short_len , res = 0, len(short_str), '' for i in range(short_len): for j in range(i + 1, short_len + 1): temp = short_str[i:j] if temp in long_str and len(temp) > max_len: max_len = len(temp) res = temp print(res) except: break