zoukankan      html  css  js  c++  java
  • (华为机试题)字符串-字符串排序

    • 题目描述
    编写一个程序,将输入字符串中的字符按如下规则排序(一个测试用例可能包含多组数据,请注意处理)。
    
    规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
    
    如,输入: Type 输出: epTy
    
    规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
    
    如,输入: BabA 输出: aABb
    
    规则 3 :非英文字母的其它字符保持原来的位置。
    
    如,输入: By?e 输出: Be?y
    
    样例:
    
    输入:
    
    A Famous Saying: Much Ado About Nothing(2012/8).
    
    输出:
    
    A aaAAbc dFgghh : iimM nNn oooos Sttuuuy (2012/8).
    
    示例1
    
    输入
    A Famous Saying: Much Ado About Nothing (2012/8).
    输出
    A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
    • 解法

    首先这道题要求的是排列英文字母,但是其他的字符不用管。那就只考虑对英文字母的排序,那么,我们就要想办法只按照ASCII码的顺序,只排序英文,然后将排序好的英文保存下载,再把除字母以外的字符插入到原始位置上,这不就得到排列后的string了吗。

    这里需要注意一下,Python的isalpha()函数,它无输入参数,用于判断string是否只由一个或者多个字母组成,返回bool类型。

    #coding=utf8
    def sortStr(s):
        '''
        Args:
            s: input string: List type
        Returns: output string: List type
    
        '''
        outList = []
        for i in range(26): #这里则可以巧妙的将原始的string中的字母按照ACSII码排序了
            for chr in s:
                if ord(chr)-ord('A') == i or ord(chr) - ord('a') == i:
                    outList.append(chr)
        for k in range(len(s)):
            if s[k].isalpha():
                continue
            else:
                outList.insert(k,s[k])
        return ''.join(outList)
    
    if __name__ == "__main__":
        s = input()
        outlist = sortStr(list(s))
        print(outlist)

    时间复杂度O(N)

    空间复杂度O(N)

  • 相关阅读:
    json.net的常用语句JsonConvert.SerializeObject(对象)
    struts2国际化
    多浏览器兼容性问题及解决方案之Javascript篇
    对XMLHttpRequest异步请求的面向对象封装
    java的学习资料
    多浏览器兼容性问题及解决方案之CSS篇
    jQuery库与其他JS库冲突的解决办法
    abstract virtual interface区别
    项目优化经验——垃圾回收导致的性能问题(转)
    C#实现小写金额转大写金额
  • 原文地址:https://www.cnblogs.com/yeshengCqupt/p/13509418.html
Copyright © 2011-2022 走看看