sam*_*sam 1 python string-length
任何人都可以告诉我如何在不使用len()函数或任何字符串方法的情况下获取字符串的长度.请有人告诉我,因为我疯狂地试着回答.
谢谢.
Joh*_*ooy 20
>>> 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
Run Code Online (Sandbox Code Playgroud)
一个"绕口令"
>>> sum(not out not in out for out in "shake it all about")
18
Run Code Online (Sandbox Code Playgroud)
一些递归解决方案
>>> 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
>>>
Run Code Online (Sandbox Code Playgroud)
这是一个O(1)方法:
def strlen(s):
if s == "": return 0
return s.rindex(s[-1]) + 1
Run Code Online (Sandbox Code Playgroud)
换句话说,它通过计算字符不起作用,因此对于1GB字符串和1字节字符串应该一样快.
它通过查看最后一个字符并从最末端搜索来找到该字符.因为它是最后一个字符,它总是在它看起来的第一个地方找到它,基本上总是返回最后一个字符的索引.长度只比最后一个字符的索引多一个.
为什么需要避免 len 函数超出了我的理解,但字符串是可迭代的。你应该能够做到这一点:
strlen = 0
for c in myString:
strlen += 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33477 次 |
| 最近记录: |