Four Questions Asked: 1. To find a longest palindrome in a string. 2. What is a HashSet ? Difference between HashSet and TreeSet. 3. Given a list List<x> and a function f: x -> y, convert the list to map i.e. Map<x, y> 4. What happens in the background (whole procedure) when you type a URL till the page is displayed ?
Anonymous
Task. To find a longest palindrome in a string. Test1. “asd abba dsa” -> asd abba dsa Test2. “abba” - > abba Test3. “abcdefedcbn” -> bcdefedcb Test4. “abcdefefedcba” -> efe Test5. “abcdefeefedcba” -> abcdefeefedcba Test6. “abccccccccccba” -> Algo. Find candidate of middle seq. Check palindrom. Set middle seq to next or last seq in founded palindrom. template std::pair getCurrentSequence(RandomAccessIterator current, RandomAccessIterator last) { if (current == last) return make_pair(current, last); auto seqBegin = current, seqEnd = current; while (seqEnd != last && *seqBegin == *seqEnd) seqEnd++; return make_pair(seqBegin, seqEnd); } template std::pair getLongestPalindrome(RandomAccessIterator first, RandomAccessIterator last) { if (first == last) return make_pair(first, last); auto bestPalindrome = getCurrentSequence(first, last); if (bestPalindrome.second == last) return bestPalindrome; auto middleSeq = getCurrentSequence(bestPalindrome.second, last); while (middleSeq.second != last) { auto palindromeBegin = middleSeq.first; auto palindromeEnd = middleSeq.second; auto lastSeqBegin = palindromeBegin; while (palindromeBegin != first && palindromeEnd != last) { if (*lastSeqBegin != *(palindromeEnd - 1)) lastSeqBegin = palindromeEnd; auto beforePalindromeBegin = palindromeBegin - 1; auto afterPalindromeEnd = palindromeEnd + 1; if (*beforePalindromeBegin != *(afterPalindromeEnd - 1)) break; palindromeBegin = beforePalindromeBegin; palindromeEnd = afterPalindromeEnd; } if (distance(bestPalindrome.first, bestPalindrome.second) < distance(palindromeBegin, palindromeEnd)) bestPalindrome = make_pair(palindromeBegin, palindromeEnd); if (middleSeq.second == palindromeEnd) middleSeq = getCurrentSequence(palindromeEnd, last); else middleSeq = make_pair(lastSeqBegin, palindromeEnd); } return bestPalindrome; }
Check out your Company Bowl for anonymous work chats.