Ошибка выдаваемая компилятором на олимпиадном сайте. ArgumentOutOfRange: Must be greater than length of string - C#
Формулировка задачи:
Всем привет. На одном сайте в качестве олимпиадной задачи, ну или что то около того потребовалось написать метод проверки палиндромов
Вот самый простой алгоритм, который у меня получился
В Visual Studio - все работает нормально, но на самом сайте проверка
"падает" со следующей ошибкой:
До этого была другая ошибка но как мне подсказали у меня не было проверки условия - если строка null, теперь проверка есть, но ошибка по прежнему возникает.
Заранее спасибо!
bool checkPalindrome(string inputString) { bool flag = true; string str = inputString; char[] array = str.ToCharArray(1, inputString.Length); if (inputString.Equals( null)) { return false; } else { for (int i = 0; i < array.Length; i++) { while (array[i] == array[i + 1]) { if (array[i] == array[-i]) //aaaabcaaaa { flag = true; return flag; } else { flag = false; return flag; } } } return flag; } }
System.Reflection.TargetInvocationE xception: Exception has been thrown by the target of an invocation. ---> System.ArgumentOutOfRangeException: Must be greater than the length of the string.
Parameter name: startIndex
at System.String.ToCharArray (Int32 startIndex, Int32 length) [0x00000] in :0
at testingCSharp._runigcbr.checkPalind rome (System.String inputString) [0x00000] in :0
at (wrapper managed-to-native) System.Reflection.MonoMethod:Intern alInvoke (System.Reflection.MonoMethod,objec t,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in :0
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in :0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in :0
at testingCSharp.TEST_0.run () [0x00000] in :0
Решение задачи: «Ошибка выдаваемая компилятором на олимпиадном сайте. ArgumentOutOfRange: Must be greater than length of string»
textual
Листинг программы
static bool checkPalindrome(string inputString) { if(string.IsNullOrEmpty(inputString)) throw new ArgumentException(); for(int i = 0; i<inputString.Length/2;i++) if(inputString[i] !=inputString[inputString.Length - i - 1]) return false; return true; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д