Can anyone tell me how can I get the length of a string without using the len()
function or any string methods. Please anyone tell me as I'm tapping my head madly for the answer.
Thank you.
17 回答
>>> sum(map(lambda x:1, "hello world"))
11
>>> sum(1 for x in "foobar")
6
>>> from itertools import count
>>> zip(count(1), "baz")[-1][0]
3
一个“绕口令”
>>> sum(not out not in out for out in "shake it all about")
18
一些递归解决方案
>>> def get_string_length(s):
... return 1 + get_string_length(s[1:]) if s else 0
...
>>> get_string_length("hello world")
11
>>> def get_string_length_gen(s):
... yield 1 + next(get_string_length_gen(s[1:])) if s else 0
...
>>> next(get_string_length_gen("hello world"))
11
>>>
这是一个 O(1) 方法:
def strlen(s):
if s == "": return 0
return s.rindex(s[-1]) + 1
换句话说,它不能通过计算字符来工作,因此对于 1GB 字符串应该和 1 字节字符串一样快。
它的工作原理是查看最后一个字符并从最后一个字符开始搜索以找到该字符。由于它是最后一个字符,它总是会在它看起来的第一个位置找到它,基本上总是返回最后一个字符的索引。长度仅比最后一个字符的索引大一。
为什么需要避免使用 len 函数超出了我的范围,但字符串是可迭代的。你应该能够做到这一点:
strlen = 0
for c in myString:
strlen += 1
for
您可以通过循环获取字符串的长度。
例如,而不是:
string=input("Enter a string")
print(len(string))
做这个:
string=input("Enter a string")
a=0
for letter in string:
a=a+1
print(a)
使用 while 循环
a = 'string'
count = 0
while True:
try:
if a[count]:
count += 1
except IndexError as e:
break
print(count)
>>> import re
>>> s
'mylongstring'
>>> re.subn(".","1",s)[-1]
12
>>>
如果字符串包含新行
>>> s="mys\ntring\n"
>>> re.compile(".",re.DOTALL).subn("",s)[-1]
10
这是一个奇怪的问题,所以这里有一个奇怪的答案!
try:
for i in itertools.count(): mystring[i]
except IndexError:
pass
从字符串中创建一个类似文件的对象,读取整个对象,然后告诉您的偏移量:
>>> import StringIO
>>> ss = StringIO.StringIO("ABCDEFGHIJ")
>>> ss.read()
'ABCDEFGHIJ'
>>> ss.tell()
10
尝试这样做,它非常简单易行
def calculate_length(a):
x=0
for i in a:
x+=1
print(x)
这是一个既不使用len
也不使用迭代的方法:
>>> a = 'a' * 200000
>>> a.rindex(a[-1]) + 1
200000
要使其适用于没有 的列表,请rindex
使用:
>>> a = list(range(200000))
>>> a.index(a[-1], -1) + 1
200000
简单的:
length=0
for x in "This is a string":
length+=1
print(length)
效率不高但非常简洁:
def string_length(s):
if s == '': return 0
return 1 + string_length(s[1:])
这是一种通过计算字符串中空字符串出现次数的方法:
def strlen(s):
return s.count('') - 1
由于"".count("")
返回 1,因此您必须减去 1 才能获得字符串的长度。
def length(object):#Define the length calculation function
count = 0 #initializing the length to be equal to zero
object = input() #enter the argument
for i in object:
count=count+1
print("Length of the string is"+str(count))
length(object)
在python中不使用len函数的字符串长度-
def strlen(myStr):
if(myStr==""):
return 0
else:
return 1+strlen(myStr[1:])
a = 'malayalam'
length = 0
for i in a:
if i == "":
break
else:
length+=1
print length
此代码通过计数直到“”(字符串的结尾)来验证字符串的长度。如果字符串到达结尾,则循环中断并返回字符串的最终长度。
创建一个 for 循环
styx = "如何在不使用镜头功能的情况下计算这个" number = 0 for c in styx: number = 0 + 1 print(number)