Bài 2. Viết chương trình nhập vào một xâu bất kỳ. In ra màn hình xâu đó sau khi đã xóa hết
ký tự trắng dư thừa. Ký tự trắng dư thừa (hay còn gọi là dấu cách, ký tự trống) là ký
tự trắng xuất hiện ở trước từ đầu tiên của xâu, sau từ cuối cùng của xâu và giữa các
từ cách nhau nhiều hơn 1 ký tự trắng.
Ví dụ: Giả sử * là ký tự trắng.
Cho xâu: ’**xin***chao**’. => Xâu sau khi được xử lý ’xin*chao’
Gợi ý:
Kiểm tra phần tử trong xâu có phải là ký tự trắng hay không? Nếu đúng thì xóa ký tự trắng đó
cho đến khi không còn ký tự trắng ở đầu xâu.
Kiểm tra từ đầu đến cuối xâu, nếu có 2 ký tự trắng liên tiếp => Xóa đi 1 ký tự trắng, thự hiện
công việc xóa cho đến khi giữa các từ trong xâu chỉ cách nhau 1 ký tự trắng.
Sau khi xử lý các ký tự trắng dư thừa ở đầu xâu, giữa xâu. Ta xử lý tiếp ký tự trắng dư thừa ở
cuối xâu bằng cách kiểm tra ký tự cuối cùng có phải là ký tự trắng hay không. Nếu đúng thì xóa
cho đến khi ký tự cuối cùng của xâu không phải là ký tự trắng.
B1: Khai báo.
B2: Nhập xâu bất kỳ.
B3: Xoá ký tự trắng dư thừa
B3.1: Xoá ký tự trắng dư thừa xuất hiện ở đầu tiên của xâu (nếu có).
Chừng nào ký tự đầu tiên trong xâu là ký tự trắng => xoá ký tự trắng đó cho đến khi đầu xâu
không phải là ký tự trắng.
B3.2: Xoá ký tự trắng dư thừa cuối cùng của xâu (nếu có).
Chừng nào trong xâu xuất hiện 2 ký tự trắng trong xâu => xoá đi 1 ký tự trắng dư thừa.
B3.3: Xoá ký tự trắng dư thừa giữa các từ (nếu có).
Chừng nào ký tự cuối cùng là ký tự trắng => Xoá đi ký tự đó.
B4: In ra kết quả
#include <bits/stdc++.h>
using namespace std;
string st;
int d,i;
int main()
{
getline(cin,st);
d=st.length();
for (i=0; i<=d-1; i++)
if ((st[i]==' ') and (st[i+1]=' ')) st.erase(i,1);
cout<<st;
return 0;
}