代码中有什么错误?这似乎在我的IDE中运行正常,但在在线终端上不起作用

2023-03-22
前端之家小编收集整理的代码中有什么错误?这似乎在我的IDE中运行正常,但在在线终端上不起作用内容,希望整理的这个开发编程问题代码中有什么错误?这似乎在我的IDE中运行正常,但在在线终端上不起作用能够快速解决!

代码问题

我正在尝试解决leetcode问题8 String to integer(atoi)。但是我遇到了运行时错误。

TypeError:“ str”对象不可调用 myAtoi(Solution.py)中的第9行

我了解这是由于调用了字符串对象,但似乎无法弄清楚要解决的问题。

class Solution:
    def myAtoi(self,str: str) -> int:
        string = str.strip()
        if string[0]=='-' or string[0]=='+' or string[0].isdigit():
            new = string[0]
            for i in range(1,len(string)):
                if string[i].isdigit():
                    new = new+string[i]
                    if i!=len(string)-1 and (string[i+1]==' ' or string(i+1).isalpha()):
                        break
            if(int(new)>=0):
                if((int(new) & 0x7fffffff)==int(new)):
                    return int(new)
                else:
                    return int(0x7fffffff)
            else:
                if((int(new) & -0x80000000)==int(-0x80000000)):
                    return int(new)
                else:
                    return int(-0x80000000)

有人可以告诉我这里要解决的问题吗?

问题答案

您在前if中没有返回任何内容,并且在字符串调用中出错,您使用()而不是[],正确的代码将是:

class Solution:
    def myAtoi(self,str: str) -> int:
        string = str.strip()
        if string[0]=='-' or string[0]=='+' or string[0].isdigit():
            new = string[0]
            for i in range(1,len(string)):
                if string[i].isdigit():
                    new = new+string[i]
                    if i!=len(string)-1 and (string[i+1]==' ' or string[i+1].isalpha()):
                        break
            if(int(new)>=0):
                if((int(new) & 0x7fffffff)==int(new)):
                    return int(new)
                else:
                    return int(0x7fffffff)
            else:
                if((int(new) & -0x80000000)==int(-0x80000000)):
                    return int(new)
                else:
                    return int(-0x80000000)
        else:
          return 0

print(Solution().myAtoi("abc"))
print(Solution().myAtoi("ab"))
print(Solution().myAtoi("a"))
print(Solution().myAtoi("abc d e fgh"))
print(Solution().myAtoi("452 abc d e fgh"))
print(Solution().myAtoi("abc d e fgh 452"))
print(Solution().myAtoi("   -42"))
,

对于任何想知道这个问题的最终答案的人,是:

class Solution:
    def myAtoi(self,str: str) -> int:
        string = str.strip()
        if not string:
            return 0
        if not string.strip("+-"):
            return 0
        if string[0]=='-' or string[0]=='+' or string[0].isdigit():
            new = string[0]
            for i in range(1,len(string)):
                if string[i].isdigit() or string[i]=='.':
                    new = new+string[i]
                    if i!=len(string)-1 and (string[i+1]==' ' or string[i+1].isalpha()):
                        break
                elif string[i]=='-' or string[i]=='+':
                    break
                elif string[i].isalpha():
                    break
                else:
                    return 0
            new2 = new.strip("+-")
            if new2:
                if(int(float(new))>=0):
                    if((int(float(new)) & 0x7fffffff)==int(float(new))):
                        return int(float(new))
                    else:
                        return int(0x7fffffff)
                else:
                    if((int(float(new)) & -0x80000000)==int(-0x80000000)):
                        return int(float(new))
                    else:
                        return int(-0x80000000)
            else:
                return 0
        else:
            return 0

这是最佳解决方案吗?没有!但是我能想到的最好的。

运行时:44毫秒,比Python 3在线提交的String to Integer(atoi)快47.19%。 内存使用量:13.9 MB,不到Python3在线提交的String to Integer(atoi)的5.95%。

如果觉得前端之家所整理的内容很不错的话,欢迎点击下方分享按钮,转发给身边开发程序员好友。

编程问答


是否可以将 Python 程序转换为 C/C++? 我需要实现几个算法,我不确定性能差距是否足以证明我在 C/C++ 中执行它时所经历的所有痛苦(我不擅长)).我想写一个简单的算法,并根……
我想使用 NTT 进行快速平方(请参阅快速 bignum 平方计算),但即使对于非常大的数字……超过 12000 位.
C++ 标准在 3.3.2声明点\"中包含一个半著名的令人惊讶\"名称查找示例: int x = x; 这用自身初始化 x,它(作为原始类型)未初始化,因此具有不确定的值(假设它是一个自动变……
以下代码: myQueue.enqueue(\'a\'); myQueue.enqueue(\'b\'); cout << myQueue.dequeue() << myQueue.dequeue();
据我所知,写时复制不是在 C++11 中实现符合标准的 std::string 的可行方法,但是当它最近在讨论中出现时,我发现我自己无法直接支持这种说法.