Đề: Cho chuỗi kí tự vd ababab hãy xóa các kí tự trùng chỉ giữ lại 1 kí tự, vd bababa còn lại ba
AI giúp mình với đang cần gấp
thanks trước
cách thô sơ nhất là duyệt từng ký tự trong chuỗi, so sánh ký tự đó với các ký tự đứng trước nó xem có cái nào giống nó ko, có thì del nó
Code:
for i:=2 to length(str) do
for j:=1 to i do
if str[i]=str[j] then begin
delete(str,i,1);
dec(i);{có thể không cần cái này, bạn tự test nhá}
break;
end;
Có, ta sẽ dùng Skq để lưu kết quả
Mình làm thế này
Code:
for i:=1 to length(s) do
begin
skq:=skq+s[i]; {Them ki tu vao skq}
t:=1;
repeat
t:=pos(skq[length(skq)],s);{tim vi tri cua cac vi tri co ki tu giong ki tu vua them vao skq}
if s[t]=skq[length(skq)] then delete(s,t,1); { Xoa no di}
until t=0;{den khi nao ko con tim thay nua}
end;
Thay đổi nội dung bởi Englandhuynh; 08-06-2012 lúc 15:12.
bạn Englandhuynh có thể giúp mình cách khác gọn hơn và dễ tư duy hơn nữa không. mình làm được bài này với code sau, mọi ng xem và cho ý kiến. đã test ok
for i:=1 to length(s) do
begin
j:=i+1;
repeat
ì s[i]=s[j] then delete(s,j,1)
else j:=j+1;
until j>length(s)
end;
writeln(s);
readln
end.
Thì code mình post lên đó
Thuật toán của bạn là xét từng kí tự rùi tìm phía sau nó có kí tự trùng thì del
Mà thay vì dùng biến j bạn có thể dùng hàm pos để tìm
Cách này là gọn nhất rùi đó
for i:=1 to (length(ST)-1) do
for j:=i+1 to length(ST) do
if ST[i]=ST[j] then
delete(ST,j,1)
cách của bạn ko thể del các kí tự giống nhau nhưng ko liền nhau đc, vd abaabba->ababa. theo mih dùng pos của Englandhuynh là hay nhất
p/s: bài này đã lâu rùi và cũng đã có đáp án rùi, bạn ko nên đào nó lên nữa
writeln('Xoa ky tu trung');
s1:='';
for i:= 1 to length(s) do
if s[i]<>s[i+1] then
s1:=s1+s[i];
writeln(s1);
Nghi sai lắm nè
1. Khi I=Length(s) mà đi so sánh với I+1 là vượt ra giới hạn xâu sẽ báo lỗi
2. bababa thì so sánh kiểu đó cũng chỉ so sánh a với b, thấy khác nhau ( rõ ràng ) thì gán vào S1, thế thì nó ra xâu cũ rồi ...
Điều quan trọng là Bạn hôm nay có giỏi hơn Bạn hôm qua không, chứ không phải Bạn có giỏi hơn người ta hay không.
Email liên hệ: lyvinhloi.cntt@gmail.com