zoukankan      html  css  js  c++  java
  • 剑指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)
    
    
    
  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/void-lambda/p/12318443.html
Copyright © 2011-2022 走看看