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
xanderbg avatar xanderbg 53 Точки

Уж и моята идея е такава, въпреки, че съм го написал доста по-сложно, но някъде изпускам нещо. Явно втрябва да дебъгвам, но не знам с какъв вход или да го пренанпиша. Благодаря, все пак явно поне на теория съм се сетил за всички кейсове.

1
NikolaPetkov824 avatar NikolaPetkov824 0 Точки

Можеш ли да ми обясниш какво се случва във втория цикъл? Мисля че в условието пише да въртим втория цикъл отдясно наляво ? но не мога да разбера как си го направил. Благодаря

0
Silvave avatar Silvave 127 Точки

Когато дължината на единият ти масив е равен на 1, а дължината на другият е по-голяма, дава грешен резултат. Примерно с инпут на масивите - str1 = java и str2 = php java или str2 = java и str1 = php java, ти дава резултат 0, а трябва да ти даде резултат 1. Проблема ти идва от булевите променливи на 11-ти и 12-ти ред и else if проверката на 30-ти ред от кода ти в github. Ако ги махнеш, защото са излишни и промениш малко булевите си стойности на 74-ти и 87-ми ред (github), защото хвърлят exception, би трябвало да ти даде 100 точки.

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