Trích:
|
tại sao ta không cho chạy từ 1 -- > length(st) nếu s[i] = #32 thì delete(st,i,1);
|
Đúng cách này sẽ xóa hết kí tự trắng nhưng khi cần dùng xóa kí tự trắng thường là do yêu cầu chuẩn hóa sâu kí tự của đầu bài, tức là xóa hết trằng ỏ đầu, cuối và mỗi chữ trong chuỗi chỉ cách nhau bởi 1 kí tự trắng. Từ yêu cầu đó mới nảy sinh ra 3 bước chuẩn hóa xâu mà bạn đã biết.
@to gico2107 : giải thích của bạn sai hoàn toàn, đoạn mã 1 sẽ xóa hết kí tự trắng ở đầu xâu.
Còn đoạn thử 2 không xóa đc hết kí tự trắng ở đầu xâu, có thể giải thích đơn giản như sau:
Nếu xâu của bạn có 5 kí tự trắng đánh dấu là abcde
ban đầu s[1] là kí tự trắng a, vì a là kí tự trắng nến xóa a dẫn đến s[1] trở thành kí tự trắng b tăng i lến 1 tức i=2 mà hiện tại s[2] là kí tự trắng c và tiếp tục xét và xóa, như vậy nó bỏ qua kí tự trắng b.
Tóm lại đoạn code 2 cứ cách một kí tự lại xóa một kí tự trắng, code sai, thậm chí bạn nhập vào 1 chuỗi nhứ sau: a s d f g h (bắt đầu là 1 kí tự trắng và sau đó là xen kẽ nhau 1 kí tự thường và 1 kí tự trắng) code vẫn hoạt động và xóa hết kí tự trắng.