二维数组中的查找&&替换空格

本文介绍了一种在二维有序数组中查找特定整数的方法,通过从右上角开始比较,根据大小调整搜索方向,实现了高效查找。同时,讨论了三种不同的字符串空格替换策略,包括使用内置函数、列表遍历替换和字符串切割后重组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路

在二维行列有序数组中,从右上角开始查找整数num时:
1.num大于数组元素,向下走;
2.num小于数组元素,向左走;
3.如果等于,则返回True。
当越过数组边界时,则返回False。查找起始位置可以是左下角。

代码

# -*- coding: utf-8 -*-
class Solution:
    def Find(self,target,array):
        row,col = 0,len(array[0])-1
        while (row <= len(array)-1) and (col >= 0):
            if target > array[row][col]:                        #目标值大,往下走
                row,col = row+1,col                   
            elif target < array[row][col]:                      #目标值小,往左走
                row,col = row,col-1
            else:
                return True
        return False

if __name__ == "__main__":
    solution = Solution()
    array = [[1,2,5,7],[3,4,9,13],[4,7,10,14],[5,8,11,15]]
    target = 18
    print solution.Find(target,array)

替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

思路

  • 解法1
    直接调用str的replace方法,原字符串不变
  • 解法2
    将实参转换成list类型。顺序遍历,遇到空格就替换。对于多个字符替换问题,该方法不适用,需要利用filter函数。
  • 解法3
    调用str.split()方法,切割字符串,再用‘%20’.join()链接切割后的字符串列表。
  • 关于str、tuple、num不可变,list、dict、set可变,待补充

代码

# -*- coding: utf-8 -*-
class Solution:
    def replaceSpace1(self,s):
        return s.replace(" ","%20")         #直接调用str的replace方法
    
    def replaceSpace2(self,s):
        sList = list(s)                     #转换成list,list可变,str不可变
        for i in range(len(sList)):
            if sList[i] == " ":
                 sList[i] = "%20"           #替换
        return "".join(sList)        

if __name__ == "__main__":
    s = "we are happy"
    solution = Solution()
    print solution.replaceSpace1(s)
    print solution.replaceSpace2(s)
    print s                                 #str不可变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值