Tìm hiểu cách tạo hàm tùy chỉnh của bạn giống như ATOI để chuyển đổi chuỗi thành số nguyên mà không cần sử dụng bất kỳ phương thức nội bộ nào Show
Thí dụInput: "-123" "123" Output: -123 123 Chúng ta sẽ xem cả giải pháp lặp và đệ quy cho việc này Lặp đi lặp lại chuyển đổi chuỗi thành số nguyên (ATOI)Để chuyển đổi bất kỳ chuỗi nào thành số nguyên, chúng ta cần xử lý bốn trường hợp góc
Chúng ta sẽ phải đưa ra một giải pháp bằng cách ghi nhớ tất cả các trường hợp này
const iterativeATOI = (str) => { let sign = 1; base = 0; i = 0; //Ignore the leading white spaces while(str[i] === ''){ i++; } // Decide sign of number if (str[i] == '-' || str[i] == '+') { sign = 1 - 2 * (str[i++] == '-' ? 1 : 0); } // Checking for valid input while (i < str.length && str[i] >= '0' && str[i] <= '9') { // Handling overflow test case if (base > Number.MAX_VALUE / 10 || (base == Number.MAX_VALUE / 10 && str[i] - '0' > 7)) { if (sign == 1) { return Integer.MAX_VALUE; } else{ return Integer.MIN_VALUE; } } //For the new number base = 10 * base + (str[i++] - '0'); } //Return the number return base * sign; } Input: console.log(iterativeATOI("-123")); console.log(iterativeATOI("+123")); console.log(iterativeATOI("/123")); Output: -123 123 0 // for invalid inputs Độ phức tạp về thời gian. Trên); Giải pháp đệ quy để chuyển đổi chuỗi thành số nguyên trong javascriptChúng ta có thể dễ dàng chuyển đổi giải pháp lặp lại thành giải pháp đệ quy. Tất cả những gì chúng ta cần làm là tạo một hàm bổ sung sẽ gọi đệ quy chính nó để chuyển đổi chuỗi Thực hiện atoi để chuyển đổi một chuỗi thành một số nguyên. Đầu tiên, hàm loại bỏ càng nhiều ký tự khoảng trắng càng…mật mã. com Thực hiện atoi để chuyển đổi một chuỗi thành một số nguyên Trước tiên, hàm loại bỏ bao nhiêu ký tự khoảng trắng cần thiết cho đến khi tìm thấy ký tự không phải khoảng trắng đầu tiên. Sau đó, bắt đầu từ ký tự này, lấy một dấu cộng hoặc dấu trừ ban đầu tùy chọn, theo sau là càng nhiều chữ số càng tốt và diễn giải chúng dưới dạng một giá trị số Chuỗi có thể chứa các ký tự bổ sung sau các ký tự tạo thành số nguyên, các ký tự này bị bỏ qua và không ảnh hưởng đến hoạt động của hàm này Nếu chuỗi đầu tiên của các ký tự không phải khoảng trắng trong str không phải là một số nguyên hợp lệ hoặc nếu không có chuỗi nào như vậy tồn tại vì str trống hoặc nó chỉ chứa các ký tự khoảng trắng, thì không có chuyển đổi nào được thực hiện Nếu không thể thực hiện chuyển đổi hợp lệ, giá trị 0 được trả về Ghi chú
ví dụ 1 Input: "42" ví dụ 2 Input: " -42" ví dụ 3 Input: "4193 with words" Ví dụ 4 Input: "words and 987" Ví dụ 5 Input: "-91283472332" thuật toán 1 Vì hàm loại bỏ càng nhiều khoảng trắng càng tốt cho đến khi tìm thấy ký tự không phải khoảng trắng đầu tiên, trước tiên chúng ta có thể tiếp tục và cắt chuỗi đã cho, trước đó chúng ta có thể kiểm tra xem nó có rỗng không và nếu có thì trả về 0 2 Sau khi cắt, nếu độ dài chuỗi bằng 0, tức là chuỗi rỗng, thì trả về 0 luôn 3 Để quan tâm đến dấu + hoặc — tùy chọn, chúng tôi kiểm tra xem ký tự đầu tiên của chuỗi là '+' hay '-' và nếu vậy, chúng tôi sẽ tăng start Index từ giá trị ban đầu là 0. Nếu ký tự đầu tiên là '-' thì chúng ta chuyển boolean isNegative được khởi tạo ban đầu thành false, thành true 4 Để xử lý trường hợp số, chúng tôi lấy ký tự thứ i từ chuỗi và trừ nó bằng '0' và chuyển kết quả thành int và lưu trữ trong một biến sốDigital. Và cập nhật biến kết quả của chúng tôi để tạo lại giá trị số dưới dạng kết quả * 10 + DigitValue. Trước khi quan tâm đến trường hợp số, phải cẩn thận để đảm bảo rằng ký tự hiện tại không nằm ngoài phạm vi asci của '0' hoặc '9'. Nếu đúng như vậy thì theo quy tắc đã cho, ta ngắt khỏi chuỗi lặp để trả về kết quả, với điều kiện nhất định 5 Nếu isNegative là đúng, thì chúng tôi chuyển đổi kết quả để trỏ đến phiên bản phủ định của giá trị của nó 6 Nếu kết quả thuộc loại double, nhỏ hơn Integer. MIN_VALUE, sau đó chúng tôi trả về Số nguyên. MIN_VALUE. Tương tự như vậy nếu kết quả lớn hơn Integer. MAX_VALUE thì chúng tôi trả về Số nguyên. GIÁ TRỊ TỐI ĐA. Điều này sẽ xử lý các trường hợp tràn và tràn số nguyên 7 Cuối cùng, chúng tôi chuyển kết quả trở lại int và trả về giá trị được chuyển đổi kết quả Bài kiểm tra 1 Kiểm tra với nhiều dấu + — liên tiếp với nhau, theo sau là giá trị số hoặc văn bản, sẽ trả về 0, vì sau dấu tùy chọn đầu tiên, không có giá trị số 2 Thử nghiệm với các giá trị kết quả tràn và tràn 3 Kiểm tra với chuỗi rỗng 4 Kiểm tra với các từ xen kẽ với các số. Kiểm tra với các số xen kẽ với dấu + — Giải pháp Phân tích độ phức tạp Vì chúng ta kết thúc việc lặp qua toàn bộ chuỗi trong trường hợp xấu nhất, nên độ phức tạp thời gian là T O(n), do chúng ta không sử dụng bất kỳ không gian phụ trợ nào, S O(1) Làm cách nào để chuyển đổi chuỗi JavaScript thành số nguyên?Trong JavaScript hàm parseInt() (hoặc một phương thức) được sử dụng để chuyển đổi tham số hoặc giá trị chuỗi được truyền vào thành một giá trị số nguyên. This function returns an integer of the base which is specified in the second argument of the parseInt() function.
Atoi có hoạt động trên chuỗi không?Hàm atoi() chuyển đổi chuỗi ký tự thành giá trị số nguyên . Chuỗi đầu vào là một chuỗi các ký tự có thể được hiểu là một giá trị số của kiểu trả về được chỉ định. Hàm dừng đọc chuỗi đầu vào ở ký tự đầu tiên mà nó không thể nhận ra là một phần của số.
Làm cách nào để chuyển đổi chuỗi thành int C?Trong C, hàm atoi() chuyển chuỗi thành số nguyên. . Nếu thực hiện thành công, hàm trả về giá trị nguyên Nếu chuỗi bắt đầu bằng ký tự chữ và số hoặc chỉ chứa ký tự chữ và số, 0 được trả về Atoi có nhanh không?Atoi là cách nhanh nhất mà tôi có thể nghĩ ra . Tôi đã biên dịch bằng msvc 2010 để có thể kết hợp cả hai mẫu. Trong msvc 2010, khi tôi kết hợp các mẫu, trường hợp bạn cung cấp đối số cb chậm hơn. |