第六天

49 阅读4分钟

在我踏上Python编程之旅的初期,掌握基础语法是至关重要的第一步。Python,这门被誉为“最易上手”的编程语言,以其简洁明了的语法和强大的功能,吸引了我深入探索的兴趣。

1. 变量与数据类型

Python中的变量无需事先声明类型,赋值时即可自动确定。例如,a = 10定义了一个整型变量a;b = "Hello"则定义了一个字符串类型变量b。Python支持多种数据类型,包括整型(int)、浮点型(float)、字符串(str)、布尔型(bool)等,每种类型都有其特定的用途和操作方法。

2. 控制结构

Python的控制结构包括条件语句(if...elif...else)和循环语句(for、while)。条件语句用于根据条件执行不同的代码块,如if x > 0: print("x是正数")。循环语句则用于重复执行某段代码,直到满足特定条件为止。例如,for i in range(5): print(i)会打印0到4的数字。

3. 函数

函数是Python中组织代码的重要工具,通过定义函数,可以将重复使用的代码块封装起来,提高代码的可读性和复用性。定义函数使用def关键字,如def greet(name): print(f"Hello, {name}!")。调用函数时,只需输入函数名和必要的参数即可。

4. 模块与包

Python的模块是包含Python代码的文件,它们可以被其他Python代码导入并使用。这有助于代码的模块化和重用。例如,math模块提供了许多数学运算的函数,使用import math即可访问这些函数。包则是模块的集合,用于组织更大的代码库。

5. 输入输出

Python提供了简单的输入输出功能。input()函数用于从用户那里获取输入,而print()函数则用于在屏幕上显示输出。这两个函数是程序与用户交互的基本手段。

通过这一周的学习,我深刻体会到了Python基础语法的重要性,它们是构建更复杂程序的基础。接下来,我将继续深入学习Python的高级特性,如面向对象编程、异常处理等,期待在编程的世界里越走越远。

今天我学习了下面这个问题: 小U和小R有两个字符串,分别是𝑆S和𝑇T,现在小U需要通过对𝑆S进行若干次操作,使其变成𝑇T的一个前缀。操作可以修改𝑆S的某一个字符,或者删除𝑆S末尾的字符。现在你需要帮助小U计算出,最少需要多少次操作才能让𝑆S变成𝑇T的前缀。

问题理解

我们需要通过对字符串 S 进行若干次操作,使其变成字符串 T 的一个前缀。操作可以是修改 S 的某一个字符,或者删除 S 末尾的字符。目标是计算出最少需要多少次操作。

解题思路

  1. 比较字符串长度:首先,比较 ST 的长度。如果 S 的长度大于 T 的长度,那么 S 必须删除多余的尾部字符,直到长度与 T 相同。
  2. 逐字符比较:从字符串的开头逐字符比较 ST,直到 S 的某个字符与 T 不匹配。
  3. 计算操作次数
    • 如果 S 的某个字符与 T 不匹配,需要进行修改操作。
    • 如果 S 的长度大于 T 的长度,需要进行删除操作。

代码提示

以下是一些代码提示,帮助你实现这个逻辑:

def solution(S: str, T: str) -> int:
    # 初始化操作次数
    operations = 0
    
    # 获取两个字符串的最小长度
    min_length = min(len(S), len(T))
    
    # 逐字符比较
    for i in range(min_length):
        if S[i] != T[i]:
            # 如果字符不匹配,增加操作次数
            operations += 1
    
    # 如果 S 的长度大于 T 的长度,需要删除多余的尾部字符
    if len(S) > len(T):
        operations += len(S) - len(T)
    
    return operations

if __name__ == '__main__':
    print(solution("aba", "abb") == 1)
    print(solution("abcd", "efg") == 4)
    print(solution("xyz", "xy") == 1)
    print(solution("hello", "helloworld") == 0)
    print(solution("same", "same") == 0)

关键步骤注释

  1. 初始化操作次数operations = 0
  2. 获取两个字符串的最小长度min_length = min(len(S), len(T))
  3. 逐字符比较for i in range(min_length):
  4. 字符不匹配时增加操作次数if S[i] != T[i]: operations += 1
  5. 处理多余尾部字符if len(S) > len(T): operations += len(S) - len(T)

我学习到了求最少前缀的方法,首先需要对字符串进行若干次的修改,