Làm thế nào để đảo ngược một chuỗi trong C

How Reverse String C



Trong mã hóa chuỗi, đảo ngược chuỗi là một chủ đề quan trọng. Ngoài ra còn có một số phương pháp để đảo ngược một chuỗi, mỗi phương pháp có một logic khác nhau. Bài viết này sẽ chỉ cho bạn cách đảo ngược một chuỗi đúng cách để sử dụng một số cách tiếp cận và lập luận riêng biệt có và không yêu cầu bất kỳ hàm đặt trước nào. Bất cứ khi nào việc đảo ngược kỹ thuật chuỗi được áp dụng trong một chuỗi đầu vào duy nhất cụ thể, văn bản mà người tiêu dùng cung cấp theo một thứ tự cụ thể sẽ bị đảo ngược hoàn toàn. Trong ví dụ bên dưới, các lựa chọn thay thế khác nhau để đảo ngược một chuỗi với C đã được sử dụng.

Khi thực hiện hướng dẫn này, chúng tôi đã làm việc trên hệ thống Linux Ubuntu 20.04 được cấu hình trên Virtual Box. Trong khi làm việc trên hệ thống Linux, chúng tôi đã từng thực hiện hầu hết các cài đặt và truy vấn của mình trên terminal shell. Do đó, hãy mở terminal shell bằng phím tắt Ctrl + Alt + T hoặc tìm kiếm nó qua thanh tìm kiếm ứng dụng trong vùng Activity của màn hình Ubuntu. Trước tiên, cần phải cập nhật hệ thống của bạn thông qua truy vấn cập nhật apt. Nó sẽ yêu cầu bạn nhập mật khẩu người dùng hiện tại để chạy bản cập nhật. Do đó, hãy thêm mật khẩu và nhấn nút Enter.







Cập nhật $ sudo apt



Vì chúng ta đã sử dụng ngôn ngữ lập trình C để xây dựng khái niệm đảo ngược các chuỗi trong hệ thống Ubuntu 20.04, người ta nên cài đặt trình biên dịch C trên hệ thống Ubuntu của họ. Do đó, hãy đảm bảo cài đặt trình biên dịch GCC trên hệ thống của bạn thông qua truy vấn bên dưới.



$ sudo apt cài đặt gcc

Ví dụ 01: Sử dụng For Loop

Sau khi cài đặt và cấu hình trình biên dịch GCC và cập nhật gói apt, nó sẽ chuyển sang tạo một tệp mới. Tệp này phải thuộc loại C; do đó, sử dụng lệnh cảm ứng để tạo tệp new.c như bên dưới. Tệp này sẽ được sử dụng trong mã của chúng tôi kể từ bây giờ trong quá trình thực hiện các chương trình chuỗi ngược.





$ touch mới.NS

Giờ đây, bạn có thể mở tệp này để chỉnh sửa hoặc viết mã bằng trình chỉnh sửa Nano đã được tích hợp sẵn trong hệ thống Linux Ubuntu 20.04 của bạn. Do đó, hãy thử hướng dẫn bên dưới trong trình bao của bạn để làm như vậy.



$ nano mới.NS

Tệp loại C mới được tạo mới đã được mở trong GNU Nano Editor của hệ thống Ubuntu 20.04. Bạn phải viết một tập lệnh C trong đó, như được trình bày trong hình ảnh chụp màn hình bên dưới. Hãy để chúng tôi trình bày chi tiết về mã này để bạn hiểu rõ hơn. Khi bắt đầu một đoạn mã, chúng tôi đã bao gồm hai thư viện. Thư viện stdio.h đã được sử dụng để lấy đầu vào và hiển thị đầu ra, và thư viện string.h khác đã được sử dụng để sử dụng tất cả các loại chuỗi trong mã của chúng tôi. Tất cả công việc đảo ngược một chuỗi sẽ được thực hiện trong phương thức main () của mã C. Chúng tôi đã khai báo một loại ký tự chuỗi str có kích thước 50. Điều này có nghĩa là một chuỗi có hơn 50 ký tự không thể được giải trí trong mã này. Sau đó, chúng ta đã khai báo hai biến kiểu số nguyên. Biến l đã được sử dụng để thu thập độ dài của chuỗi str và, biến I sẽ được sử dụng làm bộ khởi tạo trong vòng lặp for. Sau đó, chúng tôi đã sử dụng câu lệnh printf để in văn bản trên shell Nhập chuỗi, yêu cầu người dùng thêm giá trị vào một biến chuỗi. Phương thức scanf () đã được sử dụng để nhập cho người dùng tại thời điểm chạy và lưu giá trị đó vào một chuỗi str. Hàm strlen () đã được sử dụng để kiểm tra độ dài của một chuỗi str đã được người dùng thêm vào lúc chạy và lưu nó vào một biến l ’. Sau đó, chúng tôi khởi tạo một vòng lặp for để đảo ngược chuỗi str. Bạn có thể thấy rằng bộ khởi tạo I ’đang lấy giá trị từ một biến l để đảo ngược hướng của một chuỗi. Sau đó, nó in các ký tự của một chuỗi str ’lần lượt được đảo ngược. Cuối cùng, phương pháp chính đã được kết thúc. Lưu tệp này bằng Ctrl + S và thoát khỏi nó bằng Ctrl + X.

Bây giờ đã đến lúc biên dịch mã và kiểm tra đầu ra của nó. Do đó, quá trình biên dịch đã được thực hiện bởi truy vấn gcc được nêu dưới đây với tên của tệp new.c.

$ gcc mới.NS

Khi biên dịch thành công, điều đó có nghĩa là không có lỗi trong mã của chúng tôi. Hãy thực thi tệp của chúng ta bằng truy vấn a.out trong shell như sau:

$./đến.ngoài

Quá trình thực thi sẽ yêu cầu người dùng thêm một chuỗi. Chúng tôi đã thêm I-Am-Aqsa-Yasin và nhấn Enter. Bạn có thể thấy nó trả về phần ngược lại của một chuỗi ở dòng sau.

Ví dụ 02: Sử dụng Hoán đổi

Trong ví dụ này, chúng ta sẽ sử dụng phương thức hoán đổi để đảo ngược thứ tự của một chuỗi. Do đó, mở tệp new.c một lần nữa bằng trình chỉnh sửa nano như sau:

$ nano mới.NS

Bây giờ tệp đã được mở trong trình soạn thảo GNU nano; chúng ta cần cập nhật tệp mã bằng tập lệnh được hiển thị bên dưới trong ảnh chụp màn hình. Trước tiên, chúng tôi đã bao gồm tệp tiêu đề đầu vào và đầu ra tiêu chuẩn trong mã của chúng tôi bằng cách sử dụng từ khóa #include. Chúng tôi đã xác định một phương thức Reverse () theo cách sử dụng của kỹ thuật hoán đổi. Chúng tôi đã khởi tạo ba biến kiểu số nguyên new, I và swap. Vòng lặp for đầu tiên được sử dụng để kiểm tra xem chuỗi s có trống hay không. Vòng lặp for tiếp theo được sử dụng để lặp lại và trong phần thân của nó, chúng tôi đã hoán đổi các giá trị bằng cách sử dụng các biến mới và hoán đổi. Cần lưu ý rằng việc đảo ngược một chuỗi có độ dài n chỉ mất n / 2 vòng. Sau khi các chuỗi đã được hoán đổi, bạn sẽ phải lặp lại để hiển thị chuỗi đã đảo ngược mà chúng tôi thực hiện trong ứng dụng của mình bằng cách sử dụng vòng lặp for thứ ba. Hàm Reverse () phải được gọi từ bên trong chương trình chính. Bạn đã nêu những gì phần mềm của bạn thực hiện với printf bên trong ngữ cảnh của main (). Sau đó, bạn sử dụng scanf () để lấy thông tin đầu vào của người dùng và gọi phương thức Reverse (). Bây giờ, hãy lưu lại tệp bằng Ctrl + S và rời khỏi trình soạn thảo nano bằng phím tắt Ctrl + X và quay lại trình bao đầu cuối.

Biên dịch mã trước bằng truy vấn gcc như bên dưới.

$ gcc mới.NS

Bây giờ thực thi tệp mã sử dụng cùng một hướng dẫn ./a.out.

$./đến.ngoài

Nó sẽ yêu cầu bạn nhập giá trị chuỗi. Chúng tôi đã thêm AqsaYasin và có điều ngược lại.

Ví dụ 03: Sử dụng Đệ quy

Trong ví dụ này, chúng tôi sẽ sử dụng đệ quy để đảo ngược một chuỗi do người dùng thêm vào. Do đó, hãy mở lại tệp.

$ nano mới.NS

Chương trình này in ra Nhập một câu: Phương thức Reverse () sau đó được sử dụng. Chữ cái đầu tiên do người dùng nhập vào được lưu trong c thông qua phương thức này. Reverse () được thực thi một lần nữa nếu đối số không phải là n (dòng mới). Quy trình này tiếp tục cho đến khi người dùng nhấn phím Enter. Bất cứ khi nào người dùng nhấn enter, phương thức Reverse () sẽ in văn bản theo thứ tự ngược lại. Lưu và đóng tập tin.

Biên dịch mã trước và sau đó chạy nó bằng cách sử dụng các lệnh trước đó như sau:

$ gcc mới.NS

$./đến.ngoài

Bạn có thể thấy nó nhận đầu vào từ người dùng dưới dạng toàn bộ câu chuỗi và sau đó đảo ngược thứ tự của câu đó.

Phần kết luận:

Cuối cùng, chúng tôi đã thực hiện ba ví dụ để giải thích kỹ hơn về việc đảo ngược đầu vào kiểu chuỗi bằng các phương thức khác nhau, ví dụ: sử dụng vòng lặp for, sử dụng đệ quy và sử dụng hoán đổi.