class Solution(object):
def countSubstrings(self, s, t):
#s = "aba"
#t = "baba"
len_s, len_t = len(s), len(t)
ret = 0
for i in range(len_s):
for j in range(len_t):
diff, k = 0, 0
#print i,j
while k+i < len_s and k+j < len_t: # k+i는 i의 새로 시작하는 인덱스, k+j는 j의 새로 시작하는 인덱스다.
if s[k+i] != t[k+j]:
diff += 1
if diff == 1:
ret += 1
if diff > 1:
break
k += 1
return ret
class Solution(object):
def getKth(self, lo, hi, k):
d = {2**n: n for n in range(1, 10)} # 미리 저장해둘 사전 캐시. 2의 n승이면 현재 위치에서 n번만 더 가면 된다.
def getpower(num):
if num in d:
return d[num]
if num % 2 == 0:
d[num] = getpower(num/2) + 1
else:
d[num] = getpower(num*3+1) + 1
return d[num]
ret = []
for i in range(lo, hi+1):
power = getpower(i)
ret.append([i, power])
return sorted(ret, key=lambda x:(x[1], x[0]))[k-1][0]
class Solution(object):
def searchInsert(self, nums, target):
#nums = [1,3,5,6]
#target = 2
start, end = 0, len(nums)-1
while start <= end:
mid = int((start + end)/2)
#print(start, mid, end)
if target == nums[mid]:
return mid
elif target < nums[mid]:
end = mid - 1
else:
start = mid + 1
#print('f =',start,mid,end)
return start