相关疑难解决方法(0)

如何将任何基数中的整数转换为字符串?

Python允许从给定base的字符串中轻松创建整数

int(str, base). 
Run Code Online (Sandbox Code Playgroud)

我想执行逆向:从整数创建一个字符串,即我想要一些函数int2base(num, base),这样:

int(int2base(x, b), b) == x
Run Code Online (Sandbox Code Playgroud)

函数名称/参数顺序并不重要.

对于任何数量x和底座bint()会接受的.

这是一个很容易编写的函数:实际上它比在这个问题中描述它更容易.但是,我觉得我必须遗漏一些东西.

我知道的功能bin,oct,hex,但我不能使用他们的几个原因:

  • 这些函数在旧版本的Python上不可用,我需要与它兼容(2.2)

  • 我想要一个通用的解决方案,可以用不同的基础调用相同的方法

  • 我想允许2,8,16以外的碱基

有关

python base radix

186
推荐指数
11
解决办法
20万
查看次数

这个时间复杂度实际上是O(n ^ 2)吗?

我正在研究CTCI的一个问题.

第1章的第三个问题是你带一个字符串如

'Mr John Smith '

并要求您用以下内容替换中间空格%20:

'Mr%20John%20Smith'

作者在Python中提供了这个解决方案,称之为O(n):

def urlify(string, length):
    '''function replaces single spaces with %20 and removes trailing spaces'''
    counter = 0
    output = ''
    for char in string:
        counter += 1
        if counter > length:
            return output
        elif char == ' ':
            output = output + '%20'
        elif char != ' ':
            output = output + char
    return output
Run Code Online (Sandbox Code Playgroud)

我的问题:

我理解这是从左到右扫描实际字符串的O(n).但是Python中的字符串不是不可变的吗?如果我有一个字符串,我用+操作符添加另一个字符串,它是否分配必要的空格,复制原始字符串,然后复制附加字符串?

如果我有一个n长度为1 的字符串集合,则需要:

1 + 2 + 3 + 4 …

python string algorithm string-concatenation

82
推荐指数
3
解决办法
6085
查看次数

Python:创建大小n ^ 2元组的时间和空间复杂性

这是我学校过去一年中期论文的问题.下面附有一张图,用于显示机器人如何从同一张纸上移动.我的担忧在橙色部分中说明.

在此输入图像描述

基本上,只要机器人遇到左侧未看到的网格方块,机器人就会向前移动并向左转.

给予机器人横向3号网格的指令序列是:('F','T','F','T','F','F','T','F',' F','T','F','F','F')其中'F'表示向前移动一个方格,'T'表示向左转90度.请注意,最后一条指令会导致机器人退出网格.函数gen_seq将网格的大小作为输入,并返回机器人横向网格的指令序列.指令序列是一个包含字符串'F'和'T'的元组,它们代表forward和turn命令.

提供函数gen_seq的递归或迭代实现.提示:Recall int可以与元组相乘.

说明实施时间和空间的增长顺序,并解释您的答案.

这些是markscheme中建议的答案.

def gen_seq(n): # recursive
    if n == 1:
        return ('F',)
    else:
        side = ('T',) + (n-1)*('F',)
        return gen_seq(n-1) + side + side + ('F',)

def gen_seq(n): # iterative
    seq = ('F',)
    for i in range(2, n+1):
        side = ('T',) + (n-1)*('F',)
        seq += side + side + ('F',)
    return seq
Run Code Online (Sandbox Code Playgroud)

时间:O(n ^ 3).在每个函数调用(递归)或循环(迭代)中,创建螺旋的每个"层"的路径长度的新元组.由于螺旋的长度是n ^ 2,并且有n个函数调用或循环运行n次,因此总时间是n ^ 2*n = O(n3).换句话说,它是平方和:1 ^ 2 + 2 ^ 2 + 3 ^ 2 + ::: + …

python big-o tuples space-complexity python-3.x

8
推荐指数
1
解决办法
622
查看次数

python 2.7字符串反转

如果我需要在Python 2.7中实现字符串反向而不是使用系统库,那么想知道是否有更高效的解决方案?我试过我的代码运行速度很慢很长的字符串(例如几千个字符).谢谢.

对于字符串反转,我的意思是,例如,给定s ="hello",返回"olleh".

def reverseString(self, s):
    """
    :type s: str
    :rtype: str
    """
    if not s:
        return ''
    temp = []
    result=''
    for i in range(len(s)-1,-1,-1):
        result += s[i]
    return result
Run Code Online (Sandbox Code Playgroud)

问候,林

python python-2.7

0
推荐指数
1
解决办法
524
查看次数

string += "a" 和 string = string + "a" 的时间复杂度一样吗?

在这两个语句中,我都将一个字符附加"a"到字符串中s

  1. s += "a"
  2. s = s + "a"

Python 中哪个语句的时间复杂度更好?

python time-complexity

-2
推荐指数
1
解决办法
488
查看次数