Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình đảo ngược một từ câu được lưu trữ dưới dạng mảng ký tự trong C ++

Giả sử chúng ta có một câu chuỗi đầu vào mà mỗi phần tử được lưu trữ dưới dạng ký tự đơn, chúng ta phải đảo ngược các chuỗi từng từ một.

Vì vậy, nếu đầu vào là ["t", "h", "e", "", "m", "a", "n", "", "i", "s", "", " n "," l "," c "," e "], thì đầu ra sẽ là [" n "," l "," c "," e "," "," i "," s "," "," m "," a "," n "," "," t "," h "," e "]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • đảo ngược mảng s

  • j:=0

  • n:=kích thước của s

  • để khởi tạo i:=0, khi i

    • nếu s [i] giống với '' thì -

      • đảo ngược mảng s từ chỉ số j thành i

      • j:=i + 1

  • đảo ngược mảng s từ chỉ số j thành n

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
   public:
   void reverseWords(vector<char>& s) {
      reverse(s.begin(), s.end());
      int j = 0;
      int n = s.size();
      for(int i = 0; i < n; i++){
         if(s[i] == ' '){
            reverse(s.begin() + j, s.begin() + i);
            j = i + 1;
         }
      }
      reverse(s.begin() + j, s.begin() + n);
   }
};
main(){
   Solution ob;
   vector<char> v = {'t','h','e',' ','m','a','n',' ','i','s','
   ','n','i','c','e'};
   ob.reverseWords(v);
   print_vector(v);
}

Đầu vào

{'t','h','e',' ','m','a','n',' ','i','s',' ','n','i','c','e'}

Đầu ra

[n, i, c, e, , i, s, , m, a, n, , t, h, e, ]