Loading...
xanderbg avatar xanderbg 53 Точки

[homework] - Arrays - Exercises - 1.Largest Common End - пропускам кейс

Здравейте колеги,

 

на задачата 1.Largest Common End изкарвам 90 точки, а не мога да се сетя за повече кейсове, които да покрия. Нулевите тестове ги покривам, както и кейсовете когато двата масива са с равен брой елементи или един от тях или и двата имат само по 1 елемент. Също така покривам и кейсовете когато и в началото, и в края имам някакви сходства както и когато имам еднакъв брой сходства в началото и в края. Може ли да ми кажете какво пропускам?

 

Кода ми не е много красив, но поне върши повечето работа :) : към кода

1
Programming Fundamentals 29/05/2016 13:42:03
tihomirj avatar tihomirj 33 Точки

Използвай като вход следния пример и ще разбереш какво не е наред:

аа аа аа dd

vv dd

или

vv dd

aa aa aa dd

Методът  RightToLsftScan () се чупи в тази част:

bool areElementsEqual = str1[i] == str2[i - (str1.Length - str2.Length)];или
bool areElementsEqual = str1[i - (str2.Length - str1.Length)] == str2[i];

Както си го направил, ще се чупи всеки път, когато разликата в дължините на масивите е с 2 по-голяма от дължината на единия масив. Използваш два цикъла

for (int i = str1.Length - 1; i >= str2.Length - 1; i--)
 и  аналогично
for (int i = str2.Length - 1; i >= str1.Length - 1; i--)

i приема като последна стойност дължината на по-малкия -1. Обаче разликата в дълнините на масивите може да бъде много голяма и се оказва, че в много случаи правиш отрицателни индекси и от там методът гърми.

Ако си любопитен виж аз как съм решил задачката:

http://pastebin.com/ELd9T2XH

 

 

 

1
29/05/2016 23:57:41
DeyanStanchev avatar DeyanStanchev 0 Точки

Здравейте, ето го и моето решение, използвам arr1.Reverse().ToArray() - и пак чета и проверявам.

https://github.com/dublinstand/Software-University-Programming-Fundamentals/blob/master/3.Arrays/11_LargestCommonEnd/LargestCommonEnd.cs

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.