反转字符串中的小写字母

反转字符串中的小写字母,在"单词"内部反转,遇到非小写字母(例如大写字母、数字)则保持原位置。

输入:"Hello big World 789a1b",输出"Holle gib Wdlro 789b1a"。

解题思路主要是双指针,还有由于python的字符串不能就地反转,要先转换为列表再转回。

python 复制代码
def reverses(original_str):
    # 按空格将单次切分
    strs=original_str.split(' ')
    ans=[]
    for word in strs:
        # 转换类型
        word=list(word)
        n=len(word)
        reverse_word = ['']*n
        初始化第二个指针的位置
        right=n-1
        for i in range(n):
            if word[i].islower():
                for j in range(right,i,-1):
                    if word[j].islower():
                        reverse_word[i]=word[j]
                        reverse_word[j]=word[i]
                        right=j-1
                        break
                # 处理最中间的小写字母(不需要互换)或只有单个小写字母的情况
                if i==right or j==i+1:
                    reverse_word[i]=word[i]
            # 如果非小写则保持原位置
            else:
                reverse_word[i]=word[i]
        # list转为str
        reverse_word=''.join(reverse_word)
        ans.append(reverse_word)
    # 结果用空格连接
    return ' '.join(ans)
相关推荐
漂流瓶jz14 分钟前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
叠层归一研究院1 小时前
基于极限自指的叠层归一宇宙结构理论——无元外部封闭系统的内生区分模型
人工智能·经验分享·算法·agi
Selvaggia2 小时前
Diffusion Model 的基本原理与模型架构
算法
wabs6664 小时前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin034 小时前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao4 小时前
算法50,分治归并,数组中的逆序对
java·算法
阳明山水5 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
别动我齐刘海6 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
zhangfeng11336 小时前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu
0+1116 小时前
算法 --滑动窗口
c++·算法·leetcode