20190802大疆笔试 查找最长公共子串和阿拉伯数字转为中文

大疆测试08/02编程题

 

 

 

 

 

def getNumofCommonSubstr(str1, str2):
    # 先确保str1是较短的字符串
    if len(str2)<len(str1):
        str1,str2 = str2,str1
    lstr1 = len(str1)
    lstr2 = len(str2)
    record = [[0 for i in range(lstr2)] for j in range(lstr1)] 
    maxNum = 0   # 最长匹配长度
    p = 0    # 匹配的起始位

    for i in range(lstr1):
        for j in range(lstr2):
            if str1[i] == str2[j]:
                if i>0 and j>0:
                    # 相同则累加
                    record[i][j] = record[i-1][j-1] + 1
                else:
                    record[i][j] = 1
                    
                if record[i][j] > maxNum:
                    # 获取最大匹配长度
                    maxNum = record[i][j]
                    # 记录最大匹配长度的终止位置
                    p = i + 1
    return str1[p-maxNum:p]

  

if __name__ == '__main__':
    str1 = input()
    str2 = input()
    res = getNumofCommonSubstr(str1, str2)
    print(res) 

  

阿拉伯数字转为中文

例如 

18---》十八

320---》三百二十

 
54082402 ---》五千四百零八万二千四百零二
 注意: 字符串中,可以不带u,u声明了编码方式,我们默认用的是python3,不存在这个问题。

 

def num_2_chinese(num):
    mapping = (u'零',u'一',u'二',u'三',u'四',u'五',u'六',u'七',u'八',u'九',u'十',u'十一',u'十二',u'十三',u'十四',u'十五',u'十六',u'十七',u'十八',u'十九')
    p0 = (u'',u'十',u'百',u'千',u'万',u'十',u'百',u'千')
    maxNum = 10**8
    assert(0<=num and num<maxNum)
    if num<20:
        return mapping[num]
    else:
        lst = []
        """
        while num>=10:
            lst.append(num%10)
            num = int(num/10)
        lst.append(num)
     """
        #可以改为:
     while num>0:
            lst.append(num%10)
            num = int(num/10)

        c = len(lst)   #获得位数
        result = u''
        
        for idx, val in enumerate(lst):
            val = int(val)
            if val != 0:
                result += p0[idx] + mapping[val]
                if idx < c -1 and lst[idx+1]== 0:
                    result += u'零'
        return result[::-1]

if __name__ == '__main__':
    num = int(input())
    print(num_2_chinese(num))

  

 
 
posted @ 2019-08-06 11:25  lililili——  阅读(299)  评论(0)    收藏  举报