• leetcode344&345之反转字符串中的元音字母


    题目描述:

    编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

    示例 1:

    输入: "hello"
    输出: "holle"


    示例 2:

    输入: "leetcode"
    输出: "leotcede"

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-vowels-of-a-string

    代码实现:

     1 def reverseString(s):
     2     '''
     3     反转列表中字符串
     4     :param s:
     5     :return:
     6     '''
     7     left, right = 0, len(s) - 1
     8     while left < right:
     9         s[left], s[right] = s[right], s[left]
    10         left += 1
    11         right -= 1
    12 
    13 
    14 print("--------测试reverseString()---------")
    15 s = ["h", "e", "l", "l", "o"]
    16 reverseString(s)
    17 print(s)
    18 
    19 
    20 def reverseaeiou(s):
    21     '''
    22     反转字符串中的原因字母
    23     :param s:
    24     :return:
    25     '''
    26     aeiou = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}
    27     left, right = 0, len(s) - 1
    28     s = list(s)
    29     print(s)
    30     while left < right:
    31         if s[left] in aeiou and s[right] in aeiou:
    32             s[left], s[right] = s[right], s[left]
    33             left += 1
    34             right -= 1
    35         elif s[left] in aeiou:
    36             if s[right] not in aeiou:
    37                 right -= 1
    38         elif s[right] in aeiou:
    39             if s[left] not in aeiou:
    40                 left += 1
    41         else:
    42             left += 1
    43             right -= 1
    44     return "".join(s)
    45 
    46 
    47 print("--------测试reerseaeiou()--------")
    48 s = "aA"
    49 res = reverseaeiou(s)
    50 print(type(res))
    51 print(res)
    52 
    53 
    54 def reverseaeiou1(s):
    55     aeiou = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
    56     left, right = 0, len(s) - 1
    57     s = list(s)
    58     while left < right:
    59         if s[left] in aeiou:
    60             if s[right] in aeiou:
    61                 s[left], s[right] = s[right], s[left]
    62                 left += 1
    63                 right -= 1
    64             else:
    65                 right -= 1
    66         else:
    67             if s[right] in aeiou:
    68                 left += 1
    69             else:
    70                 left += 1
    71                 right -= 1
    72 
    73     return "".join(s)
    74 
    75 
    76 print("--------测试reerseaeiou1()--------")
    77 s = "aA"
    78 res = reverseaeiou1(s)
    79 print(res)

    总结:反转列表中字符串,采用双指针即可。或者使用reverse函数也可,此操作在原列表上进行。

    对反转字符串需要注意的几点:

    第一、反转string类型字符串,因为在python中,字符串一旦创建,就不能通过索引来赋值,因为要交换元音字母,最终修改后返回的必为新的对象,而不是原字符串(因为原字符串不能修改)。

    第二、在python中,哈希表和字典的搜索时间复杂度为O(1),而列表的搜索时间复杂度为O(N),因此尽量使用哈希表或者字典,避免使用列表。

  • 相关阅读:
    自编码变分贝叶斯(转载)
    加载Pytorch中的预训练模型及部分结构的导入
    pytorch读入图片并显示np.transpose(np_image, [1, 2, 0])
    高斯分布、多维高斯分布、各向同性的高斯分布及多元高斯分布之间的KL散度
    pytorch中的上采样(上采样,转置卷积,上池化,PixelShuffle)
    卷积算法动画演示
    PL/SQL编程基础
    PL/SQL Dev 调试
    PL/SQL Dev的安装与连接远程数据库
    Bean Form DTO VO Entity
  • 原文地址:https://www.cnblogs.com/rounie/p/13494379.html
Copyright © 2020-2023  润新知