剑指offer数组找数 字符串空格替换

Posted void-lambda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer数组找数 字符串空格替换相关的知识,希望对你有一定的参考价值。

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)

以上是关于剑指offer数组找数 字符串空格替换的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer_替换空格

剑指offer_替换空格

剑指offer_替换空格

剑指Offer-替换空格

剑指Offer:替换空格

剑指offer——替换空格