Skip to content
Open

1155 #54

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions leet_1155.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
class Solution:
def toHex(self, num: int) -> str:
mp = {}
for i in range(10):
mp[i] = str(i)
for i in range(10, 16):
mp[i] = chr(ord('a')+i-10)

if num==0:
return str(0)

ans = ""
neg = 1 if num < 0 else 0

rev = {v:int(k) for k,v in mp.items()}
num = num*-1 if neg else num
while num:
dig = num%16
ans += mp[dig]
num//=16
ans = ans[::-1]
if neg:
mx = "ffffffff"
ans = ''.join(["0"]*(8-len(ans))) + ans
new_ans = ""
assert(len(ans) == len(mx))
for i in range(8):
new_ans += mp[rev[mx[i]] - rev[ans[i]]]
i=7

print(new_ans, i)
f=0
while(i>0 and new_ans[i] == "f"):
new_ans = new_ans[:i] + "0" + new_ans[i+1:]
i-=1
f=1
new_ans = new_ans[:i] + mp[rev[new_ans[i]] + 1] + new_ans[i+1:]
return new_ans

else:
return ans

10 changes: 10 additions & 0 deletions leet_1310.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Solution:
def xorQueries(self, arr: List[int], queries: List[List[int]]) -> List[int]:
pref = [0]
for e in arr:
pref.append(e ^ pref[-1])
ans = []
for [l, r] in queries:
ans.append(pref[r+1] ^ pref[l])
return ans

16 changes: 16 additions & 0 deletions leet_1525.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import collections
class Solution:
def numSplits(self, s: str) -> int:
lc, rc = collections.Counter(), collections.Counter(s)

res = 0
for c in s:
lc[c] += 1
rc[c] -=1

if rc[c]==0:
del rc[c]

if len(lc) == len(rc):
res +=1
return res
28 changes: 28 additions & 0 deletions leet_338.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class Solution {
public:
vector<int> countBits(int num) {
vector<int> ans = {0, 1};
int n=2;
int tot = 2;
int j=0;
if(num==0){
vector<int> ans = {0};
return ans;
}
if(num==1){
vector<int> ans = {0, 1};
return ans;
}

while(tot != num+1){
ans.push_back(ans[j]+1);
j+=1;
if(j==n){
j=0;
n*=2;
}
tot+=1;
}
return ans;
}
};