Hướng dẫn python string slice time complexity - Độ phức tạp thời gian lát cắt chuỗi python
Câu trả lời ngắn gọn: Show Câu trả lời dài: (c) Python
Lý do tại sao #3 là quy tắc chung là để tránh các vấn đề với
Sau đó, bạn sẽ có 1 GB dữ liệu được giữ trong bộ nhớ để hỗ trợ cho một chế độ xem cho thấy 1 KB cuối cùng, một chất thải nghiêm trọng. Vì các lát thường nhỏ, nên hầu như luôn luôn nhanh hơn để sao chép trên lát thay vì tạo khung nhìn. Nó cũng có nghĩa là Làm thế nào bạn có thể thực hiện việc cắt sao chép khôngCó nhiều cách để thực hiện việc cắt dựa trên chế độ xem trong Python và trong Python 2, nó sẽ hoạt động trên 6, 7, 8 mảng, 9s, v.v.) dữ liệu. Vì vậy, nếu bạn có thể sử dụng (hoặc mã hóa) cho PY2 ________ 5/PY3 bytes và chức năng của bạn có thể hoạt động với các đối tượng giống như ____ ____ 8, thì bạn có thể làm:are ways to perform view based slicing in Python, and in Python 2, it will work on str (because str is bytes-like in Python 2, supporting the buffer protocol). With Py2 str and Py3 bytes (as well as many other data types like 6, 7, 8 arrays, 9s, etc.), you can create a
memoryview that is a zero copy view of the original object, and can be sliced without copying data. So if you can use (or encode) to Py2 str /Py3 bytes , and your function can work with arbitrary bytes -like objects, then you could do:
Các lát của ____99 tạo ra các đối tượng xem mới (chúng chỉ là cực nhẹ với kích thước cố định không liên quan đến lượng dữ liệu chúng xem), không phải bất kỳ dữ liệu nào, vì vậy 5 có thể lưu trữ một bản sao nếu cần thay đổi và nó sẽ không được thay đổi Khi chúng ta cắt nó xuống sau. Nếu bạn cần một bản sao thích hợp là PY2 ________ 5/PY3 bytes , bạn có thể gọi 8 để lấy bytes obj thô, hoặc (trong PY3 chỉ xuất hiện), hãy giải mã trực tiếp thành str sao chép từ bộ đệm, ví dụ: 1. Gần đây tôi đã suy nghĩ về các câu hỏi phỏng vấn mà tôi nhận được khi còn là một sinh viên đại học: những thứ như "đảo ngược một chuỗi" và "Kiểm tra xem một chuỗi là một palindrom". Tôi đã thực hiện hầu hết trong số này trong C ++ với một vòng lặp và cuộn qua chỉ mục bằng logic. Khi tôi học Python, tôi nhận ra rằng tôi có thể "đảo ngược một chuỗi" chỉ bằng cách đi:
Tương tự như vậy với "Kiểm tra xem nó có phải là một palindrom" bằng cách làm:
Vấn đề bây giờ là, tôi không biết đó là sự phức tạp như thế nào. Theo quan điểm của tôi, nó là không đổi, vì vậy O (1). Nhưng tôi đoán rằng điều đó quá tốt để trở thành sự thật vì việc ghép nối chuỗi đang làm một cái gì đó đằng sau hậu trường. Bất cứ ai có thể giúp tôi làm rõ? QN này là từ bài kiểm tra của trường tôi. Bối cảnh: Trong một trò chơi Hangman, người chơi cố gắng khám phá một từ ẩn bằng cách đoán các chữ cái trong từ. Giả sử tất cả các từ và chữ cái là chữ thường. Hàm loại bỏ lấy làm đầu vào 2 chuỗi, một chữ cái và một từ và xuất ra từ với tất cả các lần xuất hiện của chữ cái được xóa. Cung cấp một triển khai lặp lại của chức năng xóa và giải thích ngắn gọn về độ phức tạp về thời gian và không gian của hàm bạn đã viết. Được đính kèm bên dưới là mã của tôi, giống như giải pháp được cung cấp. Tuy nhiên, tôi đã bị vấp ngã khi tôi cố gắng giải thích độ phức tạp về thời gian và không gian như O (n) và O (1) tương ứng như câu trả lời được đưa ra là O (n^2) và O (n). Giải thích được cung cấp bởi giám khảo là: Độ phức tạp về thời gian: O (n^2) trong đó n là độ dài của chuỗi đầu vào. Điều này là do trong mỗi lần lặp vòng lặp, sự kết hợp chuỗi của new_word sẽ dài hơn cho đến khi nó ở mức tồi tệ nhất, độ dài n. Độ phức tạp của không gian: O (n), mặc dù không có hoạt động bị trì hoãn hoặc các đối tượng mới được tạo ra mọi lần lặp, chuỗi mới được tạo ra tồi tệ nhất có thể có cùng độ dài với chuỗi ban đầu nếu không có chữ cái nào bị xóa. Thực hành của tôi là khi tôi giải thích điều gì đó, tôi sẽ có thể vạch ra nó một cách toán học. Thời gian: Tổng thời gian dành cho mỗi lần lặp hoặc tổng thời gian cho mỗi đệ quy 1) Tôi không hiểu tại sao nối chuỗi đóng góp vào độ phức tạp về thời gian. Đối với các mã đệ quy của nó cắt rõ ràng vì có sự cắt lát chuỗi liên quan (S [0] và S [1:], sự hình thành của S [1:] sẽ lấy O (N-1), O (1) từ S [0] là Không đáng kể) Trong mỗi cuộc gọi đệ quy, tổng thời gian là n+(n-1)+,+1 = o (n^2). Đối với lời giải thích của lặp đi lặp lại, tôi chỉ cần chấp nhận nó hoặc có một lý thuyết đằng sau lý do tại sao sự kết hợp thêm vào sự phức tạp về thời gian. Không gian: Tổng không gian được thực hiện cho mỗi đệ quy hoặc tổng không gian được thực hiện cho mỗi lần lặp 2) Ban đầu tôi nghĩ rằng không gian cho đệ quy và lặp lại được tính toán theo cùng một cách. Có đúng không khi chấp nhận rằng để lặp lại, không gian nên được tính là không gian cần thiết cho lần lặp đòi hỏi khắt khe nhất thay vì tổng không gian tích lũy cho tất cả các lần lặp. Yêu cầu nhất sau đó sẽ là khi New_word và Word tương đương. 3) Tôi thực sự chấp nhận thực tế rằng việc lặp lại thường chiếm không gian O (1) và sẽ ném bom mỗi khi tôi có thể. Điều gì thực sự là lý do đằng sau việc coi sự phức tạp không gian của lặp đi lặp lại là O (1) là gì? Sửa lỗi cho tôi bất cứ lúc nào khi tôi thấy rằng tôi đang ghi nhớ và không hiểu nhiều điều vào thời điểm này.
Sự phức tạp về thời gian của lát Python là gì?danh sách
Python có cắt lát không đổi thời gian không?Xây dựng một lát cắt là một phần của N mất thời gian O (N).Trong bài viết liên quan này, ký hiệu Python được giải thích.Bạn cũng có thể xem xét tài liệu Python về sự phức tạp về thời gian.Vì vậy, câu trả lời là không nói chung, chỉ đối với một lát kích thước không đổi, nó có thể là thời gian không đổi.only for a constant size slice it can be constant time.
Bạn có thể cắt một chuỗi trong Python không?Chuỗi Python hỗ trợ cắt lát để tạo chuỗi con.Lưu ý rằng chuỗi Python là bất biến, việc cắt tạo ra một chuỗi con mới từ chuỗi nguồn và chuỗi ban đầu không thay đổi.. Note that Python string is immutable, slicing creates a new substring from the source string and original string remains unchanged.
Là Python cắt bao gồm bao gồm?Python là một ngôn ngữ không chỉ số (mọi thứ bắt đầu đếm từ số 0), và cũng được bao gồm, độc quyền phải khi chỉ định một loạt các giá trị.Điều này áp dụng cho các đối tượng như danh sách và chuỗi, trong đó phần tử đầu tiên có vị trí (chỉ mục) là 0.left inclusive, right exclusive you are when specifying a range of values. This applies to objects like lists and Series , where the first element has a position (index) of 0. |