View Single Post
Old 12-05-2008, 15:45   #12
Mr_Dolphin
Rìu Bạc
 
Mr_Dolphin's Avatar
 
Tham gia: Dec 2007
Bài: 341
VZD: 4.436
Điểm: 70/47 bài viết
Default

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.
__________________
-_::Tin Học là chia sẻ ::_-
http://cnttk1a.hnsv.com
Chào mừng các bạn đến diễn đàn lớp tui!
Mr_Dolphin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn