• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
鱼市口
博客园    首页    新随笔    联系   管理    订阅  订阅
python coding感想,持续更新

发觉很多python coding不怎么用,很多基本结构有所生疏。近期会持续把常用的数据结构用python搞一搞,会更新:

d = {}
res = ''
for i in range(11):
    d[i] = chr(i)


for i in range(11):
    key = list(d.keys())[i]
    value = d[key]
    new_char = chr(key+ ord(value))
    res += new_char

print(res)

回文测试:

def isPalindrome(self, s: str) -> bool:
        s= [c.lower() for c in s if c.isalnum()]
        return all (s[i] == s[~i] for i in range(len(s)//2))

 

class Color:
    def __init__(self, suffix):
        self.suffix = suffix
        self.title = f"Golden {suffix}"
 
    def __repr__(self):
        return f"Color('{self.suffix}')"
 
 
c1 = Color("Yellow")
# create another object with same params as c1
# using eval() on repr()
c2 = eval(repr(c1))
 
print("c1.title:", c1.title)
print("c2.title:", c2.title)

Output:

c1.title: Golden Yellow
c2.title: Golden Yellow

__init__()
 method that takes a suffix parameter and sets an instance variable self. suffix to that value.
It also sets another instance variable self. title to a string that includes
the suffix. Finally, it defines an __repr__() method that returns a string representation of the object.

You just called __str__
You just called __repr__
You just called __str__
#below code:
class Cylinder:
    pi = 3.14
    def __init__(self, radius, height):
        self.radius = radius
        self.height = height
    
    def __str__(self):
        return "You just called __str__"

    def __repr__(self):
        return "You just called __repr__"

cylinderOne = Cylinder(3, 6)

print(cylinderOne)

print(repr(cylinderOne))

print(str(cylinderOne))

 

 

1863. Sum of All Subset XOR Totals

The XOR total of an array is defined as the bitwise XOR of all its elements, or 0 if the array is empty.

  • For example, the XOR total of the array [2,5,6] is 2 XOR 5 XOR 6 = 1.

Given an array nums, return the sum of all XOR totals for every subset of nums. 

Note: Subsets with the same elements should be counted multiple times.

An array a is a subset of an array b if a can be obtained from b by deleting some (possibly zero) elements of b.

 

Example 1:

Input: nums = [1,3]
Output: 6
Explanation: The 4 subsets of [1,3] are:
- The empty subset has an XOR total of 0.
- [1] has an XOR total of 1.
- [3] has an XOR total of 3.
- [1,3] has an XOR total of 1 XOR 3 = 2.
0 + 1 + 3 + 2 = 6

Example 2:

Input: nums = [5,1,6]
Output: 28
Explanation: The 8 subsets of [5,1,6] are:
- The empty subset has an XOR total of 0.
- [5] has an XOR total of 5.
- [1] has an XOR total of 1.
- [6] has an XOR total of 6.
- [5,1] has an XOR total of 5 XOR 1 = 4.
- [5,6] has an XOR total of 5 XOR 6 = 3.
- [1,6] has an XOR total of 1 XOR 6 = 7.
- [5,1,6] has an XOR total of 5 XOR 1 XOR 6 = 2.
0 + 5 + 1 + 6 + 4 + 3 + 7 + 2 = 28

Example 3:

Input: nums = [3,4,5,6,7,8]
Output: 480
Explanation: The sum of all XOR totals for every subset is 480.

该代码使用按位OR运算符|计算输入列表中所有数字的按位OR,并将其存储在变量all_or中。然后,它使用左位移运算符<<计算可能的数字子集的总数,即2^n,其中n是列表的长度,并从中减去1,以获得不包括空集的子集数。最后,它将all_or与子集的数量相乘,以获得所有子集的XOR之和。

请注意,此代码实际上不会生成所有子集并计算其XOR,这将是具有O(2^n)时间复杂度的蛮力方法。相反,它使用XOR运算的数学属性,即两个相等数的XOR为0,0的数的XOR是数本身,并使用公式计算答案。这种方法的时间复杂度为O(n),对于较大的输入来说更有效。

 

class Solution:
  
class Solution:
  def subsetXORSum(self, nums: List[int]) -> int:
    n = len(nums)
    all_or = 0
 
    for i in range(n):
      all_or|=nums[i]
    return all_or * (1 << (n-1))
posted on 2023-09-15 01:34  鱼市口  阅读(49)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3