有时候我们需要判断
两个字符串内容是否相等,判断内容相等,我们用‘==’,但是有时候发现print(str1)和print(str2)眼看着一模一样,但是用==时却是
false
可能会被这种问题莫名郁闷很久,其实问题有可能很简单,如果你的
两个字符串末尾有其他符号,比如回车‘\n’,print()的时候是看不到回车符的,所以,用以下来判断:
str1 = str1.strip() #去掉
字符串中其他符号包括换行符等等
str2 = str2.strip()
if str2 == str1:
... #自己的代码
补充知识:
python2和
python3中关于不等于运算符的区别
1、空(None)表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。2、布尔类型(Boolean)在Python中,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了__nonzero__()或__len__()方法且方法返回0或False,则其实例也被当作False,其他对象均为True布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、
思路:分为3步判断
第一步,如果
两个字符串不等长,则直接返回
False
第二步,判断
两个以
字符串是否完全一样,如果一样,则判断
字符串中是否有重复元素,有,则返回True,没有则返回
False
第三步,如果
字符串不一样,则进行遍历判断,如果同一个位置元素不同,则添加进一个空列表中。
最后,如果列表长度不为2,则返回
False,如果长度为2,则看
两个字符串在这
两个位置的元素是否互换相等,相等返回True,否则返回
False。
时间复杂度:n
day03_01
翻转
字符串里的单词
先将
字符串去掉开头和结尾的空格
字符串在 Python 中是最简单也是最常用的数据类型之一,在 CPython 中字符串的实现原理使用了一种叫做 Intern(字符串驻留)的技术来提高字符串效率。究竟什么是 intern 机制,这种机制又是通过什么方式来提高字符串效率的呢?希望这篇文章能够抛砖引玉。
先来看一段代码:
>>> s3 = "hello!"
>>> s4 = "hello!"
>>> s3 is s4
False
>>> id(s3)
80325968L
>>> id(s4)
80326048L
s3 和 s4 虽然值是一样的,但确确实实是两个不同的字符串对象,Python 会为它们俩各自分配一段内存空间,假设
4. 遍历第二个
字符串,统计每个字符出现的次数,并将其存入第二个字典中。
5. 比较
两个字典中每个字符出现的次数是否相等,如果相等,则说明
两个字符串是变位词,否则不是。
下面是
Python代码实现:
```
python
def is_anagram(s1, s2):
if len(s1) != len(s2):
return
False
dict1 = {}
dict2 = {}
for c in s1:
dict1[c] = dict1.get(c, ) + 1
for c in s2:
dict2[c] = dict2.get(c, ) + 1
return dict1 == dict2
使用示例:
```
python
s1 = "listen"
s2 = "silent"
print(is_anagram(s1, s2)) # True
s1 = "hello"
s2 = "world"
print(is_anagram(s1, s2)) #
False
undefined reference to `c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string
‘ascii‘ codec can‘t encode characters in position 151-155:ordinal not in range(128)
git clone 加速