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:

 
    