• 剑指offer(1)数组找数 字符串空格替换


    1.数组找数

    描述:

    一个二维数组,从左到右递增,从上到下递增。要求找到给定整数。

    思路:

    将给定数x与右上角的数t相比,t<x时去掉这一行,t>x时去掉这一列。直到找到。PS:也可以与左下角的数字比较

    代码

    arr=[]
    n= eval(input('数组行和列:'))
    for i in range(n):
        temp=[]
        s=input('每一行:').split(' ')
        for j in range(len(s)):
            temp.append(int(s[j]))
        arr.append(temp)
    x=eval(input('find:'))
    print(arr)
    def findInarray(arr,n,x):
    
        rows=cols=n-1
        row=0
        col=n-1
        while rows>0 and cols>0 and arr is not None:
            t=arr[row][col]
            if x<t:
                cols-=1
                col-=1
            elif x>t:
                rows-=1
                row+=1
            elif x==t:
                return True
        return False
    if findInarray(arr, n, x):
        print("Find")
    else:
        print("NoFind")
    

    字符串空格替换

    描述:

    在O(n)时间内将字符串中的空格替换为%20,要求在原字符串上操作

    思路:

    先遍历一次字符串得到空格个数,每个空格,将字符串大小增大2,用两个指针,一个指向原字符串末尾,另一个指向修改后的字符串末尾,从后往前复制。

    代码:

    s=input('')
    
    cnt=0
    j=len(s)-1
    
    for it in s:
        if it==' ':
            cnt+=1
    s=list(s)
    #print(s)
    for i in range (cnt):
        s.append(' ')
        s.append(' ')
    k=len(s)-1
    
    #print(j,k)
    while j>=0:
        if s[j]!=' ':
            s[k]=s[j]
            k-=1
            j-=1
        else:
            j-=1
            s[k]='0'
            s[k-1]='2'
            s[k-2]='%'
            k-=3
    s=''.join(s)
    print(s)
    
    
    
  • 相关阅读:
    javascript修改浏览器title方法 JS动态修改浏览器标题
    input type="checkbox" 选中传值,不选中传值的方法讲解
    关闭控制台的自动切换按钮
    mac切图
    charles
    apache
    超级经典的HTTP协议讲解
    一个很有趣的算法
    移动端网络判断
    移动端1px细线的处理
  • 原文地址:https://www.cnblogs.com/void-lambda/p/12318443.html
Copyright © 2020-2023  润新知