碎碎念
主要是跟一个朋友打赌看能不能每天做一个leetcode,虽然我甚至不知道这个东西除了对要当软工的人有用以外还能干嘛XD
题干
题目会给两个字串,每遇到一个井字符号就相当于按下一次删除,阿如果遇到已经被删除的,不会往前删(这一段要看懂英文比较困扰,我一直在想如果存到已经删除的时候怎么办,后来才发现是这个意思)。
解题思路
我这边亲切的告诉chargpt我要这样的功能:
处里字串的,功能如下1.会输入两个字串2.确定第一个字串有多少"#"符号,如果有出现就删除前一个字符3.确定第二个字串有多少"#"符号,如果有出现就删除前一个字符
然后她回给我这些
def process_string(s): """ 处理单个字串,如果有'#',则删除前一个字符。 """ result = [] for char in s: if char == "#": if result: # 确保result不为空 result.pop() # 删除最后一个字符 else: result.append(char) # 如果不是'#',将字符添加到列表中 return "".join(result) # 将列表转换回字串def main(): # 请用户输入两个字串 string1 = input("请输入第一个字串: ") string2 = input("请输入第二个字串: ") # 处理字串 processed_string1 = process_string(string1) processed_string2 = process_string(string2) # 输出结果 print("处理后的第一个字串: ", processed_string1) print("处理后的第二个字串: ", processed_string2)if __name__ == "__main__": main()
再经过一些删减整合之后变成以下
class Solution: def backspaceCompare(self, s: str, t: str) -> bool: def dosomestring(string): result = [] for char in string: if char == "#": if result: # 确保result不为空 result.pop() # 删除最后一个字符 else: result.append(char) # 如果不是'#',将字符添加到列表中 return "".join(result) # 将列表转换回字串 a = dosomestring(s) b = dosomestring(t) if a == b: return True else: return False
不得不说用AI写程式,真滴快。
其他议题
但好像有複杂度相关的东西,但我毕竟不是学软体的,看我同学有没有想法啰。