2016-08-30 4 views
-1

Ich versuche, dieses Problem des Findens zu lösen, wenn zwei Wörter Anagramme von einander sind (wenn wir eine Schnur neu anordnen, stimmt sie zweite Schnur überein).Warum funktioniert meine string.Remove() nicht wie erwartet?

Basierend auf Remove single character from a string baute ich meine eigene Funktion:

public class AreAnagrams 
{ 
     public static bool AreStringsAnagrams(string FirstString, string SecondString) 
     { 
      if (FirstString == null || b == null) 
       return false; 

      if (FirstString.Length != SecondString.Length) 
       return false; 

      for (int i = 0; i < SecondString.Length; i++) 
      { 
       if (FirstString.IndexOf(SecondString[i]) == -1) 
        return false; 
       else 
        FirstString.Remove(FirstString.IndexOf(SecondString[i]), 1); // Here it does not modify FirstString, even if I put 2nd parameter as 1 
      } 

      if (FirstString.Length > 0) 
       return false; 

      return true; 
     } 

    public static void Main(string[] args) 
    { 
     Console.WriteLine(AreStringsAnagrams("neural", "unreal")); 
    } 
} 

Auf meine Uhr Ich FirstString noch sehen, wie ist. Was ist das Problem? Bitte und Danke

+0

Siehe [Handbuch] (https://msdn.microsoft.com/en-us/library/d8d7z2kk (v = vs.110). aspx): verwende den Rückgabewert. –

+0

C# -Strings sind unveränderlich. string.Remove gibt eine neue Zeichenfolge mit den entfernten Zeichen zurück. –

+0

Siehe Dokumentation: https://msdn.microsoft.com/en-us/library/9ad138yc(v=vs.110).aspx –

Antwort

0

Weisen Sie das Ergebnis zu FirstString

FirstString = FirstString.Remove(FirstString.IndexOf(SecondString[i]), 1); 
+0

Downvoter: In welcher Weise ist diese Antwort nicht nützlich oder falsch? –

+0

@BobKaufman Downvoting ist notwendig, um löschen zu können. –

Verwandte Themen