Python 程序编写您自己的 atoi()

data structurepythonserver side programmingprogramming

我们得到一个可能代表数字的字符串,如果它是一个有效的数字,那么我们必须使用 Python 编程语言将其转换为整数。atoi() 函数用于 C 编程语言,用于将作为参数传递给它的字符串转换为整数值(如果字符串是有效的整数,否则它会显示未定义的行为)。

示例

输入 1

string S = "9834"

输出

9834

解释

我们得到一个代表数字的字符串,所以我们得到了相同的输出。

输入 2

string S = "09 uy56"

输出

无效输入

解释

给定的字符串不是有效的整数,因为它包含空格和小写英文字符,因此我们给出了相应的输出。

输入 3

string str = "-987"

输出

-987

字符串有效

在这种方法中,我们假设给定的字符串是有效字符串,并且在字符串的开头、中间或结尾不包含任何空格。

此字符串仅包含数字,并且可能包含表示数字为负数的"-"字符。

在这种方法中,首先,我们将创建一个函数,该函数将接受单个参数并返回整数,即答案。

如果数字为负数,则其前面会有一个减号,这意味着我们必须检查第零个索引处的字符是否为"-"。

我们将遍历字符串并维护一个数字来存储答案。在每个索引处,我们将当前数字乘以 10 以增加一个小数点,然后将当前数字添加到它。

最后,我们将返回最终答案,让我们看看完整的代码:

示例

# 将字符串转换为整数的函数
def atoi(str):
   # 假设字符串有效
   neg = 1 # 检查负数  
   if (str[0] == '-'):
      neg = -1      
   ans = 0 
   i = 0
   # 如果数字是负数,则从下一个索引开始
   if(neg  == -1):
      i = i + 1    
   while (i < len(str)):
      cur = (int)(str[i])
      ans = ans * 10 + cur
      i = i + 1    
   ans =  ans* neg
   return ans; # 返回 ans
# 定义输入并调用函数
str = "-354663";
# 调用函数
ans = atoi(str)
# 打印答案
print("当前数字的值为:" , ans)

输出

当前数字的值为 -354663

时间和空间复杂度

上述代码的时间复杂度为 O(N),其中 N 是给定字符串中的字符数。

上述代码的空间复杂度为 O(1),因为我们没有使用任何额外空间。

字符串可能无效

在此程序中,我们将检查当前字符串是否无效,因此我们将设置一个条件,即字符串是否包含不在"0"到"9"范围内的任何字符。如果出现任何字符,我们将返回一个无效字符串作为输出,否则我们将按照前面方法中定义的步骤获取输出。

此外,我们将使用 Python 编程语言的 ord 函数获取当前字符的 ASCII 值,并将其添加到存储答案的数字中。

示例

# 将字符串转换为整数的函数 
def atoi(str):
   # 假设字符串有效
   neg = 1 # 检查负数   
   if (str[0] == '-'):
      neg = -1        
   ans = 0 
   i = 0
   # 如果数字为负数,则从下一个索引开始
   if(neg  == -1):
      i = i + 1    
   while (i < len(str)):
      # 检查基本条件
	  # 如果当前字符不是数字,则返回无效答案 
      if((ord(str[i]) > ord('9')) or (ord(str[i]) < ord('0'))):
         print("The given string represents the invalid number")
         return
      cur = (int)(str[i])
      ans = ans * 10 + cur
      i = i + 1    
   ans =  ans* neg
   # printing the answer 
   print("The value of the current number is:", ans);
    
# 定义输入并调用函数
str = "-354 663";
# 调用函数
atoi(str)

输出

给定的字符串表示无效数字

时间和空间复杂度

上述代码的时间复杂度为 O(N),其中 N 是给定字符串中的字符数。

上述代码的空间复杂度为 O(1),因为我们没有使用任何额外空间。

结论

在本教程中,我们实现了一个 Python 程序,将以字符串形式存在的数字转换为整数。 我们遍历了字符串并检查当前字符串是否表示有效数字。 我们使用 ord() python 函数获取字符的 ASCII 值并将其添加到答案中。


相关文章