thảo luận [Học Tập] Topic thuật toán

Mấy bác cho em hỏi, làm sao để xử lý chuyển số thành chuỗi theo như logic:
1-26:a-z
27:aa và đến zz là 703, 704 lại quay lại aaa.
Tks các bác!
Theo như cách tính này thì 703 phải là aaa chứ nhỉ?
Phân tích một chút: theo đề bài 1 - 26 map với a - z và từ 27-52 sẽ map với aa - az (nếu mình đang hiểu sai chỗ này thì coi như phần dưới cũng sai nha :D)
==> Vậy là 26 sẽ lấy làm mốc để tính toán.
Giả sử lấy 27 để tính toán đi, 27 chia cho 26 được 1 dư 1, => số dư 1 sẽ map với a, số kết quả chia ko tính phần dư 1 map với a => được aa
Tiếp theo lấy 28, 28 chia cho 26 được 1 dư 2 => số dư 2 sẽ là b, số kết quả chia ko tính phần dư 1 sẽ map với a => được ab
Lấy 52, 52 chia cho 26 được 2 dư 0 => số dư 0 sẽ map với z, số kết quả chia ko tính phần dư là 2 đáng ra sẽ map với b nhưng vì theo đề bài ra nó phải map với a. Vậy suy ra số này đặc biệt, cũng như tất cả các bội số của 26, trước khi map phải trừ đi 1.
=> ta có 1 tương ứng với a, 2 với b, 3 với c,.... 0 với z, default: '' (1)

pseudo code:

fn check(n: int):
if n <=0: return ''

mod_26 = n % 26
divide_by_26 = n // 26

result = map_to_character(mode_26) từ map (1) bên trên

if divide_by_26 == 0 and mod_26 == 0: pass
elif divide_by_26 > 0 and mod_26 == 0: result += check(divide_by_26-1)
else: result += check(divide_by_26)

return result.reverse()
 
Last edited:
Mấy bác cho em hỏi, làm sao để xử lý chuyển số thành chuỗi theo như logic:
1-26:a-z
27:aa và đến zz là 703, 704 lại quay lại aaa.
Tks các bác!
Tui gặp bài này trên leadcode rồi, bản chất bài này là vd: ZY = 701 = (26) * 26^1 + (25) * 26^0 hay ABC = 731 = (1) * 26^ 2 + (2) * 26^ 1 + (3)* 26^ 0. Từ đó chuyển vào code
 
Tui gặp bài này trên leadcode rồi, bản chất bài này là vd: ZY = 701 = (26) * 26^1 + (25) * 26^0 hay ABC = 731 = (1) * 26^ 2 + (2) * 26^ 1 + (3)* 26^ 0. Từ đó chuyển vào code
Đúng rồi, quy luật nó là vậy mà cứ theo lối chuyển đổi sang hệ cơ số 26. Tks bác!
 
https://leetcode.com/problems/container-with-most-water/

1636642735371.png

1636642749318.png
 
Nhập vào một chuỗi(Chuỗi có thể gồm cả chữ và số)
Lọc chuỗi chỉ lấy ra các số
Tính tổng các số đã lọc ra và in lên màn hình
###
Các cao nhân cho em hỏi bài này phải làm như nào ạ. Em lọc các số trong chuỗi ra bằng lệnh re.findall() nhưng k biết tính tổng làm sao ạ. Em có dùng lệnh Sum nhưng k được ạ.
😭
😭

Mọi người có cách giải nào khác không ạ ( K dùng lệnh re.findall() )
Em cảm ơn mọi người
😘

screenshot_1636716534.png
 
Nhập vào một chuỗi(Chuỗi có thể gồm cả chữ và số)
Lọc chuỗi chỉ lấy ra các số
Tính tổng các số đã lọc ra và in lên màn hình
###
Các cao nhân cho em hỏi bài này phải làm như nào ạ. Em lọc các số trong chuỗi ra bằng lệnh re.findall() nhưng k biết tính tổng làm sao ạ. Em có dùng lệnh Sum nhưng k được ạ.
😭
😭

Mọi người có cách giải nào khác không ạ ( K dùng lệnh re.findall() )
Em cảm ơn mọi người
😘

View attachment 864802
Đề bài còn chưa rõ thím ơi. Lọc ra các số hay các chữ số?
vd: 456hfg6 thì lấy ra 4,5,6,6 rồi tính tổng hay 456,6 rồi tính tổng?
 
Đề bài còn chưa rõ thím ơi. Lọc ra các số hay các chữ số?
vd: 456hfg6 thì lấy ra 4,5,6,6 rồi tính tổng hay 456,6 rồi tính tổng?
là lấy 4+5+6+6 bác ơi.
Vì em mới học nên chủ yếu là luyên thêm về các thuật toán nên hỏi ngu quá ạ. Bác thông cảm
=((
 
là lấy 4+5+6+6 bác ơi.
Vì em mới học nên chủ yếu là luyên thêm về các thuật toán nên hỏi ngu quá ạ. Bác thông cảm
=((
Cái list hiện tại nó chứa string mà, convert nó sang int rồi dùm sum.
sum(int(x) for x in b)

Mà bài này dùng regex thì chả khác gì dùng dao mổ trâu giết gà, :big_smile:
Như này là được rồi.

Python:
def func(inputStr):
    return sum(int(x) for x in inputStr if x.isdigit())
 
Last edited:
Back
Top