Hello we are doing this programming exercise: String doubles.
We would like to know with a detailed explanation (and more examples step by step if possible) why this code:
using System;
using System.Text;
public static class Kata
{
public static string Doubles(string str)
{
Console.WriteLine("str: "+str);
for(int i=0; i<str.Length-1;i++){
if(str[i]==str[i+1]){
str=str.Remove(i--,2); //➖➖ operator does not store the modified i value inside i?
Console.WriteLine("str: "+str);
}
}
return str;
}
}
Behaves differently than:
using System;
using System.Text;
public static class Kata
{
public static string Doubles(string str)
{
Console.WriteLine("str: "+str);
for(int i=0; i<str.Length-1;i++){
if(str[i]==str[i+1]){
str=str.Remove(i,2);
Console.WriteLine("str: "+str);
i-=1; //➖= operator DOES store the modified i value inside i?
}
}
return str;
}
}
We have read:
EDIT: For example with the following string:
zpezyhgwqevkekipkxboraceiehzpvajbjalaymsgvqlepelorhjgznaqtaghusuiypywzthoxasudhterdcwzvgyflmcgbjgfwqvefgmimdnzfsrgcpdqewohehvqlphqyzjvwpnbmpthydaiszcgnealtybeydagjvkndocgibgmxmnadtyxcynidjsxluzxelamjmpaxlfkjvsghmslztxuvevfymnawxwrtmnqinksdiopjwedqlnfqfqjblyfnlzanvybclifrmqfwczavthkdnvimztxucqjirndaediodolnylxkueowazqcdzilusmuimstcgvyrtolwnaxbmirxawfuwulawaeclrabiabhworlvpgrqnamqprwxmzegtrljvzwtlgkametzgnuzrlwawbwbdwgbkelrutpfgoerdmtrmjhlryouvrxkjixpyrpcpqkmfhvnajhfptpvklwcwewyrptmxrpjurafthzirncdtdachdgmtgqhqgtompqfzyuerjrolicsenpqetgedhxupmqsocbmnoebhdlcusbldyrcksjmcrofsyzjgpeqjniahdjlgmqrkoblsjdblmbhogkveotmtetjkfcqlokxudwnqxmcewmbmatosohbxyvxrjyxzuamxrmgyfbhcrhwxjloyxhizwizvhyocjvzeuonpnmazfqyezmpwdfprpyzjtinoxasnculkgitgjvwvjdrnsupdzpqesrlrsymljulsygxioemyzkxkiyvjihroxcnlikloqebavjgqamrusbtiqlzdajiuvdvcmkihcoseiwpxifwapmaxzmalvxqohazilysuvhodnphzfmuhskhqohikfbohgmjyhvrsjwzozgprjwnaioavklbnoyxejvqheypzblrzhcuoaozrmonvjgqwhaqvwuacrokinpekdiqnvwyieribtjpedqjmgznpalerexkdrbpdbkchrflzzayilnbrcqzfwmelrnufdtobvanohrmeswmxbadvoqdesajsrlgtesvcdlyetpztoqpvbifxyrhnepxzstxcfwvsxjqdlcapdawkrwmeupgiezcuxfvmlszjkvhufenpladmhwhwabcgloeqbrfqpelilrugypcrxevpmbyzljqtxwtozskzbzkpcucmeurauledwueforkpzcmjpjwbtwqixrhdpdeqwhjvwaqfljovqzhswuxpgrmnwnykchkjgeaunvloldyvsyjogvfojyjrijdcgahgkgsdscgbesnusruyekehbwzivilerihkwslmvdodkrlpzrofyafogkhkrckwkcxafisxoasxliwfjtpmjlownxfvylmltngirymgnbhvcynxnymzobnhdwzdohexclhjyiespfvhiwkoyvbhuqkecrbdgzcewznpqdzeuvlhmwoctzwxacghgampdrkuyuwxmyecsgdzkgquhbfqpnwsxujwevlftzbnmzhvsxkzdhqfyidsekydzrpiyxvxfkfdhitjxrdwopedxwlcuqpizpgkznegcfavabpuvmhbojnclsweponyiecmspsinzdcvknhfijoupcvzxbljypmibskriurigwogafoyheyetbhnvogypkrutscqwosfotombgvzjxzvzdchgdqonicxbtmtqznuxemzdpcjkvhbcgmkvbdsdnupgzvoxuqderbhdrpjqaexqjncyvbuwfruptxseuyzcvjoxldugxixzwlspbtwhyzmsicvlywkzqhstkypqbyugrvsiedcacsdvojibyxiptzfgfaeganjngutkdnjghtpthtmdofxywvndvbzvbnhoaklwcruxylklygafybxvnbkafgshgmsclbsrdgezxctfspauwaqmazalrvzmrlsiaenzngxodhgaodhmqslztuahaihsimjlencbgqcavmvseqhwefvawalsygfpjxgqyabgfapldgyhckalodrioecjcaknrygfujuhvyzuxeuqdvoxjcypgrxrdepctfztnsptqpdwxdgxpmwoytodgejdfirseaclfvhtzcsdkzcribdaqwnjpmjmuirolotojliclulasjbdnderbintwtmuzrkdswgnhwsbovsjxotzlqvnjtmkbpopqrvmtwdnwqlgqdwhzmtyjwmrickxafqpgxwyufcgqguxthpeimpwojnhbeijtknhbcqkorunidcoxamfpnpuawkpxqwsmkajkmgnoxbabjfmghwnqsutgesbnxuydsdluzortzvajkjpwythprgbunkaedgmjvmwvzedzgjsrdoefcevcmesfehtzrtxbocadtcmrzscvhmzuxylkwqtqrsqpfhrzubaceyksqufadiozctinexikmblwlsbcbfmxpynstbktnispbfeyqgxctumjgtjnzaguoqkdfqtcmpwdjvufncmvijdvlelzsxumbxbkvbsanuqexialydawolmfnorbetjoukclumjlhntzxdepxplwxgjrwtkbjngoqotnmdeymnroxesurwlmaymrpndrqkwpjmwjlvlmprbqjmbtnrcpkunqvuxhshugyilqbnocnimnhdidbrjgyqhurpmicnwurlrzd
We see: