<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" media="screen" href="/App_Themes/default/rss.xslt"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Comment Feed for Gary Daniels and Evan Goldring - Mock whiteboard problem (TheChannel9Team on Channel 9)</title><atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/posts/thechannel9team/gary-daniels-and-evan-goldring-mock-whiteboard-problem/rss/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Comment Feed for Gary Daniels and Evan Goldring - Mock whiteboard problem (TheChannel9Team on Channel 9)</title><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/</link></image><description>Gary Daniels and Evan Goldring - Mock whiteboard problem</description><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/</link><language>en-us</language><pubDate>Fri, 13 Nov 2009 05:47:21 GMT</pubDate><lastBuildDate>Fri, 13 Nov 2009 05:47:21 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3608.3122, Culture=neutral, PublicKeyToken=null)</generator><item><title>Re: Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;p&gt;Rasx, You are correct! One problem - you are dealing with an insane environment. People that work at Microsoft are inbread and will never listen to you. The inbreeding has created genetic freaks that can solve number puzzles on a white board whether this measures the value of a potential employee or not.&amp;nbsp;And as you so rightly point out, the exercise is silly and shows the defect of the inbreeding. &lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=505932</link><pubDate>Fri, 13 Nov 2009 05:47:21 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=505932</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/505932/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Rasx, You are correct! One problem - you are dealing with an insane environment. People that work at Microsoft are inbread and will never listen to you. The inbreeding has created genetic freaks that can solve number puzzles on a white board whether this measures the value of a potential employee or&amp;#8230;</evnet:previewtext><dc:creator>variable</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/505932/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;PRE&gt;Very, very late ;-) this handles whitespace and number etc (closer to a real palindrome rather than byte symmetry)&lt;BR&gt; &lt;BR&gt;&lt;BR&gt;static bool IsPalindrome(string subject)&lt;BR&gt;{&lt;BR&gt;  const int STEP_FORWARD = 1;&lt;BR&gt;  const int STEP_BACKWARD = -STEP_FORWARD;&lt;BR&gt;  const int BEFORE_START = -1;&lt;BR&gt;  const int CHAR_AT_A_TIME = 1;&lt;BR&gt;  const int COMPARE_EQUALS = 0;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;  &lt;BR&gt;  // assume its not a palindrome&lt;BR&gt;  bool result = false;&lt;BR&gt;&lt;BR&gt;  &lt;BR&gt;  // how to compare&lt;BR&gt;  CompareInfo ci = CultureInfo.CurrentCulture.CompareInfo;&lt;BR&gt;  CompareOptions co =&lt;BR&gt;    CompareOptions.IgnoreCase |&lt;BR&gt;    CompareOptions.IgnoreKanaType |&lt;BR&gt;    CompareOptions.IgnoreNonSpace |&lt;BR&gt;    CompareOptions.IgnoreSymbols |&lt;BR&gt;    CompareOptions.IgnoreWidth;&lt;BR&gt;&lt;BR&gt;  &lt;BR&gt;  // null strings are not palindromes&lt;BR&gt;  if (subject != null)&lt;BR&gt;  {&lt;BR&gt;    int AFTER_END = subject.Length;&lt;BR&gt;  &lt;BR&gt;    // single letter words are palindromes&lt;BR&gt;    result = (AFTER_END == 1 &amp;amp;&amp;amp; IsPalindromeChar(subject[0]));&lt;BR&gt;  &lt;BR&gt;    // start the comparison points at valid characters&lt;BR&gt;    int startOffset = GetNextValidCharacter(subject, BEFORE_START, STEP_FORWARD, AFTER_END);&lt;BR&gt;    int endOffset = GetNextValidCharacter(subject, AFTER_END, STEP_BACKWARD, BEFORE_START);&lt;BR&gt;  &lt;BR&gt;    while (startOffset &amp;lt; endOffset)&lt;BR&gt;    {&lt;BR&gt;      result = ci.Compare(subject, startOffset, CHAR_AT_A_TIME, subject, endOffset, CHAR_AT_A_TIME, co) == COMPARE_EQUALS;&lt;BR&gt;    &lt;BR&gt;      if (!result)&lt;BR&gt;        break;&lt;BR&gt;&lt;BR&gt;      &lt;BR&gt;      // move the comparison points towards each other&lt;BR&gt;      startOffset = GetNextValidCharacter(subject, startOffset, STEP_FORWARD, endOffset);&lt;BR&gt;      endOffset = GetNextValidCharacter(subject, endOffset, STEP_BACKWARD, startOffset);&lt;BR&gt;    }&lt;BR&gt;  }&lt;BR&gt; &lt;BR&gt;  return result;&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt; &lt;BR&gt;static int GetNextValidCharacter(string subject, int offset, int step, int bound)&lt;BR&gt;{&lt;BR&gt;  if (offset != bound)&lt;BR&gt;    offset += step;&lt;BR&gt;&lt;BR&gt;  while (offset != bound &amp;amp;&amp;amp; !IsPalindromeChar(subject[offset]))&lt;BR&gt;    offset += step;&lt;BR&gt;&lt;BR&gt;  return offset;&lt;BR&gt;}&lt;BR&gt; &lt;BR&gt;static bool IsPalindromeChar(char c)&lt;BR&gt;{&lt;BR&gt;  return char.IsLetter(c) || char.IsDigit(c);&lt;BR&gt;}&lt;BR&gt;&lt;/PRE&gt;&lt;BR&gt;more on &lt;A href="http://blog.figmentengine.com/2008/08/man-plan-canal-panama.html"&gt;palindromes on my blog&lt;/A&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=423849</link><pubDate>Thu, 28 Aug 2008 13:30:23 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=423849</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/423849/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Very, very late ;-) this handles whitespace and number etc (closer to a real palindrome rather than byte symmetry) static bool IsPalindrome(string subject){  const int STEP_FORWARD = 1;  const int STEP_BACKWARD = -STEP_FORWARD;  const int BEFORE_START = -1;  const int CHAR_AT_A_TIME = 1;  const int&amp;#8230;</evnet:previewtext><dc:creator>Philip Fitzsimons</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/423849/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Ok, I know this is an old question, but I will post my code for the problem, but using 8bit chars, I think this does not change the overall solution : ) &lt;br&gt;&lt;br&gt;bool isPalyndrome(const char* aStr)&lt;br&gt;{&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( aStr == NULL ) return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int size = strlen(aStr);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; --size;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for( int i = 0; i &amp;lt; size/2; i++ )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ( aStr[i] != aStr[size -1 -i] )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;&amp;nbsp;}&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=421008</link><pubDate>Tue, 12 Aug 2008 03:20:11 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=421008</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/421008/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Ok, I know this is an old question, but I will post my code for the problem, but using 8bit chars, I think this does not change the overall solution : ) bool isPalyndrome(const char* aStr){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( aStr == NULL ) return false;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#8230;</evnet:previewtext><dc:creator>Jos&amp;#233; Marcelo Auler</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/421008/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;Hi All!&lt;BR&gt;&lt;BR&gt;how about this &lt;BR&gt;code does take in account for characters you want to skip,&lt;BR&gt;but it does not check for case sensivivity&lt;BR&gt;&lt;BR&gt;pure c++, not using any rtl&lt;BR&gt;avoiding checking for special case if string is "ABA" for example&lt;BR&gt;&lt;BR&gt;TCHAR ptszSkip[] = {' ', ',', '!', '-'};&lt;BR&gt;bool IsPalindrome(TCHAR* ptsz)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; bool bRet = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp; if(NULL != ptsz)&lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TCHAR* ptszEnd = ptsz;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(*ptszEnd != 0)&amp;nbsp; //get&amp;nbsp;end pointer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++ptszEnd;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --ptszEnd;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bRet = true;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(ptsz &amp;lt; ptszEnd)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool bDoCheck = true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(size_t i = 0; i &amp;lt; sizeof(ptszSkip)/sizeof(ptszSkip[0]); i++)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { /*check for skiped chars*/&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(*ptsz == ptszSkip[i])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++ptsz;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDoCheck = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(*ptszEnd == ptszSkip[i])&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --ptszEnd;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bDoCheck = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bDoCheck)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(*ptsz != *ptszEnd) //as soon as find first not equal chars ,&amp;nbsp; return false&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bRet = false;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++ptsz;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --ptszEnd;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; return bRet;&lt;BR&gt;}&lt;BR&gt;&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=299647</link><pubDate>Thu, 29 Mar 2007 07:18:38 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=299647</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/299647/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi All!how about this code does take in account for characters you want to skip,but it does not check for case sensivivitypure c++, not using any rtlavoiding checking for special case if string is "ABA" for exampleTCHAR ptszSkip[] = {' ', ',', '!', '-'};bool IsPalindrome(TCHAR* ptsz){&amp;nbsp;&amp;nbsp;&amp;#8230;</evnet:previewtext><dc:creator>IgorZ</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/299647/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;This is my code, it is pretty good...&lt;BR&gt;if anyone destruct this, please tell me :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;bool isPalandrome( char* str ){&lt;BR&gt;&amp;nbsp;bool result = true ;&lt;BR&gt;&amp;nbsp;char *end = str + strlen( str ) - 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;while( str &amp;lt; end )&lt;BR&gt;&amp;nbsp;&amp;nbsp;result &amp;amp;= (((*(str++)) ^ (*(end--))) == 0);&lt;BR&gt;&amp;nbsp;return result;&lt;BR&gt;}&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=247939</link><pubDate>Sat, 04 Nov 2006 21:02:15 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=247939</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/247939/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>This is my code, it is pretty good...if anyone destruct this, please tell me :)bool isPalandrome( char* str ){&amp;nbsp;bool result = true ;&amp;nbsp;char *end = str + strlen( str ) - 1;
&amp;nbsp;while( str &amp;lt; end )&amp;nbsp;&amp;nbsp;result &amp;amp;= (((*(str++)) ^ (*(end--))) == 0);&amp;nbsp;return result;}</evnet:previewtext><dc:creator>emreknlk</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/247939/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;Using C# 2.0....&lt;BR&gt;&lt;BR&gt;public static bool IsPalindrome(string val)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;char[] _chars = val.ToCharArray();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Array.Reverse(_chars);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string _reverseVal = new string(_chars);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return val.Equals(_reverseVal);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=161600</link><pubDate>Sat, 25 Feb 2006 04:26:35 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=161600</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/161600/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Using C# 2.0....public static bool IsPalindrome(string val)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;char[] _chars = val.ToCharArray();
&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Array.Reverse(_chars);
&amp;nbsp;&amp;nbsp;&amp;nbsp;string _reverseVal = new string(_chars);
&amp;nbsp;&amp;nbsp;&amp;nbsp;return val.Equals(_reverseVal);
}</evnet:previewtext><dc:creator>IanB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/161600/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;My approach would have been to first solve the problem in the quickest (i.e. takes the shortest time to think of) way, likely using standard C++ library or the reverse-string approach. This would give me a chance to bring up the fact that I recognize that I'm being paid by the minute to write code and that I'm interested in protecting the company's bottom-line and not just to fool around with a small piece of code and waste time doing unnecessary embellishments and speed optimizations. Once I'm sure the interviewer gets my point about business considerations&amp;nbsp;then I would qualify my first answer by saying however if the code proved (in about 2-3% of the time) to fall within the "critical" code category then I would next show the more efficient code (which I could be working out in my head while mindlessly presenting the more obvious but inefficient one). Plenty of techies are good at being playfully ingenious but precious few realize that it is also important to show one's bosses that one is shares their companies' bottomline concerns.&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=146202</link><pubDate>Thu, 29 Dec 2005 04:42:46 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=146202</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/146202/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>My approach would have been to first solve the problem in the quickest (i.e. takes the shortest time to think of) way, likely using standard C++ library or the reverse-string approach. This would give me a chance to bring up the fact that I recognize that I'm being paid by the minute to write code&amp;#8230;</evnet:previewtext><dc:creator>bentan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/146202/Trackback.aspx</trackback:ping></item><item><title>Re: a ruby way</title><description>Try
using my new non-KISS, très l33t solution to check any String for
palindromosity.&amp;nbsp; I'm sure Matz should add this to 1.8.4.&lt;br&gt;
&lt;br&gt;
#!/usr/bin/ruby&lt;br&gt;
&lt;br&gt;
#extend Ruby's built-in String class to allow palindrome checking, then give it a try!&lt;br&gt;
#public domain, november 25th, 2005 by dale anderson&lt;br&gt;
&lt;br&gt;
class String&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def palindrome?&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #normalize the string, result: s&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s = self.gsub(/\W/, '').upcase&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #string length, half length&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sl = s.length&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hl = sl / 2&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# sl&amp;nbsp;&amp;nbsp;&amp;nbsp; hl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
p1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
SAMPLE FIGURES&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4-7 &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4-6&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3-5&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3-4&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2-3&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2-2&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0-0 *&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
0-0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0-0 *&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
# * we observe that 0 and 1 are special cases&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true if sl &amp;lt;= 1&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
#compare the p1 versus the backwards p2&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
p1 = s[ 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hl-1)&amp;nbsp; ]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
p2 = s[ (sl-hl) ..&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (sl-1)&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #puts " *** '#{p1}' vs. '#{p2}' ***"&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true if p1 == p2.reverse&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
tests = {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'pull-up' =&amp;gt; true,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Oo.pSpOo' =&amp;gt; true,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '' =&amp;gt; true,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'A' =&amp;gt; true,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '4321/abc\ba 1 2 3 4' =&amp;gt; true,&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "hi there" =&amp;gt; false,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'mememe' =&amp;gt; false&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
for potpal,georgeboole in tests&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; raise "Potential Palindrome: '#{potpal}' was #{not georgeboole}!" unless&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; potpal.palindrome? == georgeboole&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
Thanks for the video.&amp;nbsp; &lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=136481</link><pubDate>Fri, 25 Nov 2005 18:15:27 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=136481</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/136481/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Try
using my new non-KISS, très l33t solution to check any String for
palindromosity.&amp;nbsp; I'm sure Matz should add this to 1.8.4.

#!/usr/bin/ruby

#extend Ruby's built-in String class to allow palindrome checking, then give it a try!
#public domain, november 25th, 2005 by dale&amp;#8230;</evnet:previewtext><dc:creator>ton_chat</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/136481/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>A bit too late (like a year or so, but just stumbled on this video
preparing for my own interview...). Anyway here is my 2 cents in Java
(handles case, punctuation, spaces by ignoring them). Tried to compress the algorithm as
much as possible, but still keep the readability:&lt;br&gt;
&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static boolean findPolyndrom(String polynd) {&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (polynd == null || "".equals(polynd = polynd.toLowerCase().trim())) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int index = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int length = polynd.length();&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char forward = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char reverse = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean isValidString = false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (index &amp;lt; length) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
while(!Character.isLetterOrDigit(forward = polynd.charAt(index++))) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (index &amp;gt;= length) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
return isValidString;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
while(!Character.isLetterOrDigit(reverse = polynd.charAt(--length))) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (length &amp;lt;= index) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
return isValidString;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isValidString = true;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (forward != reverse) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (length &amp;lt;= index) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=120040</link><pubDate>Tue, 04 Oct 2005 03:55:20 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=120040</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/120040/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>A bit too late (like a year or so, but just stumbled on this video
preparing for my own interview...). Anyway here is my 2 cents in Java
(handles case, punctuation, spaces by ignoring them). Tried to compress the algorithm as
much as possible, but still keep the readability:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#8230;</evnet:previewtext><dc:creator>vivemoire</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/120040/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Ike-it's Ritz!&amp;nbsp; Where you been?&amp;nbsp; I was talking to JJ last night, and he said MJK had come across this video.&amp;nbsp; Nice work!&amp;nbsp; &lt;BR&gt;-LIZ</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=119755</link><pubDate>Mon, 03 Oct 2005 15:01:26 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=119755</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/119755/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Ike-it's Ritz!&amp;nbsp; Where you been?&amp;nbsp; I was talking to JJ last night, and he said MJK had come across this video.&amp;nbsp; Nice work!&amp;nbsp; -LIZ</evnet:previewtext><dc:creator>ritzbit</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/119755/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Here's what I came up with in a few minutes. It should run in linear
time and in-place. Not sure if it will work with TCHARs yet, so I'll
give that a shot in a few minutes.&lt;br&gt;
&lt;br&gt;
[code language="c++"]&lt;br&gt;
bool isAlphaNumeric(char c)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(iswalpha(c) || iswdigit(c)) return true;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
bool isPalindrome(char *str)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(*str == '\0')&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int len = strlen(str);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(len &amp;lt;= 1) return true; // 0- or 1-length strings are simplest palindromes&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; char *start = str;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; char *end = start + strlen(str) - 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(start &amp;lt; end)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // if start not a char, increment start and continue&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(!isAlphaNumeric(*start))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *start++;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // if end not a char, decrement end and continue&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(!isAlphaNumeric(*end))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *end--;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // if two characters are not equal, return false&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(towlower(*start) != towlower(*end)) return false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // otherwise start++, end--&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *start++;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *end--;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;
}&lt;br&gt;
[/code]&lt;br&gt;
&lt;br&gt;
Edit: Yup, substituting TCHAR for char works just fine. And just for
the hell of it, here's strrev (or revstr, to avoid name conflicts)&lt;br&gt;
&lt;br&gt;

[code language="c++"]&lt;br&gt;
void revstr(TCHAR *str)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(*str == '\0')&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TCHAR *start = str;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TCHAR *end = start + strlen(str) - 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(start &amp;lt; end)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *start ^= *end;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *end ^= *start;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *start ^= *end;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *start++;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; *end--;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // could also use *start ^= *end ^= *start++ ^= *end-- if you want to get fancy&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
}&lt;br&gt;
[/code]&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=96335</link><pubDate>Tue, 09 Aug 2005 15:17:38 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=96335</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/96335/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Here's what I came up with in a few minutes. It should run in linear
time and in-place. Not sure if it will work with TCHARs yet, so I'll
give that a shot in a few minutes.

[code language="c++"]
bool isAlphaNumeric(char c)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(iswalpha(c) || iswdigit(c)) return&amp;#8230;</evnet:previewtext><dc:creator>DoggettCK</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/96335/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>TimP,

yours is the best.  You make use of the best performing C# implementation by using the native methods in the .net framework and the least lines of code.  Just MHO

Cheers,
Kosher
MCSD/MCAD .net</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=93628</link><pubDate>Tue, 02 Aug 2005 19:41:27 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=93628</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/93628/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>TimP,

yours is the best.  You make use of the best performing C# implementation by using the native methods in the .net framework and the least lines of code.  Just MHO

Cheers,
Kosher
MCSD/MCAD .net</evnet:previewtext><dc:creator>Kosher</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/93628/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;Not very efficient, and not even a MS product, but here is my interpretation.&amp;nbsp; I'm not horribly efficient, but oh well.&lt;BR&gt;&lt;BR&gt;......&lt;BR&gt;&lt;BR&gt;type&lt;BR&gt;&amp;nbsp; TPalindromeResult = (prTrue, prFalse, prLengthMismatch, prException);&lt;BR&gt;&lt;BR&gt;......&lt;BR&gt;&lt;BR&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp; Case IsPalindrome(edit1.Text, edit2.Text) of&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; prTrue:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageDlg('You the man',mtInformation,[mbOk],0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; prFalse:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageDlg('You not the man', mtInformation, [mbOk],0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; prLengthMismatch:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageDlg('Can''t compare, length mismatch', mtInformation, [mbOk],0);&lt;BR&gt;&amp;nbsp; End;&lt;BR&gt;end;&lt;BR&gt;&lt;BR&gt;......&lt;BR&gt;&lt;BR&gt;function TForm1.IsPalindrome(Str1, Str2: String): TPalindromeResult;&lt;BR&gt;Var&lt;BR&gt;&amp;nbsp; WorkStr : String;&lt;BR&gt;&amp;nbsp; X : Integer;&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp; Try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Perform basic checks before iteration.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (Length(Str1) &amp;lt;&amp;gt; Length(Str2)) Then Begin&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := prLengthMismatch;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For X := 1 to Length(Str1) do&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Insert(Copy(Str2,X,1),WorkStr,0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (WorkStr = Str1) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := prTrue&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := prFalse;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Except&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Exception do Result := prException;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End;&lt;BR&gt;&amp;nbsp; Finally&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Perform any necessary cleanup&lt;BR&gt;&amp;nbsp; End;&lt;BR&gt;&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=92999</link><pubDate>Mon, 01 Aug 2005 07:00:58 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=92999</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/92999/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Not very efficient, and not even a MS product, but here is my interpretation.&amp;nbsp; I'm not horribly efficient, but oh well.......type&amp;nbsp; TPalindromeResult = (prTrue, prFalse, prLengthMismatch, prException);......procedure TForm1.Button1Click(Sender: TObject);begin&amp;nbsp; Case&amp;#8230;</evnet:previewtext><dc:creator>RuneSpyder</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/92999/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Why no one sees the obvious solution using regular&lt;BR&gt;C++ standard library facility:&lt;BR&gt;&lt;BR&gt;bool is_palindrome(const string&amp;amp; s) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return equal(s.begin(), s.end(), s.rbegin());&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;The equal funcition assumes that the second sequence is the same size as the first, so it does not need&lt;BR&gt;and ending iterator.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Stefan</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=69262</link><pubDate>Mon, 23 May 2005 08:06:50 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=69262</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/69262/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Why no one sees the obvious solution using regularC++ standard library facility:bool is_palindrome(const string&amp;amp; s) {&amp;nbsp;&amp;nbsp;&amp;nbsp;return equal(s.begin(), s.end(), s.rbegin());}The equal funcition assumes that the second sequence is the same size as the first, so it does not needand ending iterator.Stefan</evnet:previewtext><dc:creator>fxbrain</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/69262/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>And here's the iterative version:&lt;br&gt;
[code language="C#"]&lt;br&gt;
bool IsPalindrome(string s)&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareInfo ci = CultureInfo.CurrentCulture.CompareInfo;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions co =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreCase |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreKanaType |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreNonSpace |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreSymbols |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreWidth;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int i = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TextElementEnumerator e = StringInfo.GetTextElementEnumerator(s);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (e.MoveNext())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; i++; // just counting, that's all&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] ts = new String[ i ];&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Reset();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (e.MoveNext())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; ts[ i ] = e.GetTextElement();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // phew!&amp;nbsp; Now ts[ i ] is an array of textelements&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // place finger A on the beginning of the string&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // place finger B on the end of the string&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // move fingers toward the middle a step at a time&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // until you get to a mismatch or your fingers meet&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int a = 0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int b = ts.Length - 1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (a &amp;lt; b)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; // move A forward until you find an interesting element&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (a &amp;lt; b &amp;amp;&amp;amp; ci.Compare(ts[ a ], "", co) == 0)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; a++;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // move B backward until you find an interesting element&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (a &amp;lt; b &amp;amp;&amp;amp; ci.Compare(ts[ b ], "", co) == 0)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; b--;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (a &amp;lt; b)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; // compare the two elements&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // if they're the same, continue...&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (ci.Compare(ts[ a ], ts[ b ], co) == 0)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; a++; b--;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else // they're different - NOT a palindrome&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br&gt;
}&lt;br&gt;
[/code]&lt;br&gt;
&lt;br&gt;Updated Sandbox project&lt;br&gt;
Instead of hardcoding the CompareOptions I created checkboxes for all
the Ignore... options.&amp;nbsp; Default is to ignore everything.&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61590</link><pubDate>Thu, 28 Apr 2005 21:55:05 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61590</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/61590/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>And here's the iterative version:
[code language="C#"]
bool IsPalindrome(string s)
{&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareInfo ci = CultureInfo.CurrentCulture.CompareInfo;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions co =
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreCase |
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#8230;</evnet:previewtext><dc:creator>Maurits</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/61590/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Ah... due to the ArrayReverse... I see... working on a fix&lt;br&gt;
&lt;br&gt;
EDIT: here's the fix (don't have Whidbey beta 2, sorry)&lt;br&gt;
&lt;br&gt;
[code language="C#"]&lt;br&gt;
string StringReverse(string s)&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&amp;nbsp; TextElementEnumerator e = StringInfo.GetTextElementEnumerator(s);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; string r = "";&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (e.MoveNext())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; r = e.GetTextElement() + r;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return r;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
bool IsPalindrome(string s)&lt;br&gt;
{&amp;nbsp;&amp;nbsp; string r = StringReverse(s);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareInfo ci = CultureInfo.CurrentCulture.CompareInfo;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions co =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreCase |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreKanaType |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreNonSpace |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreSymbols |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreWidth;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (ci.Compare(s, r, co) == 0);&lt;br&gt;
}&lt;br&gt;
[/code]&lt;br&gt;
&lt;br&gt;
I'm trying to do an iterative version too - where instead of
copy/reverse, you put a finger on the beginning and the end and compare
relevant TextElements until you either find a mismatch (return false)
or your fingers meet (return true)&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61577</link><pubDate>Thu, 28 Apr 2005 21:20:41 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61577</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/61577/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Ah... due to the ArrayReverse... I see... working on a fix

EDIT: here's the fix (don't have Whidbey beta 2, sorry)

[code language="C#"]
string StringReverse(string s)
{&amp;nbsp;&amp;nbsp;&amp;nbsp; TextElementEnumerator e = StringInfo.GetTextElementEnumerator(s);
&amp;nbsp;&amp;nbsp;&amp;nbsp; string r =&amp;#8230;</evnet:previewtext><dc:creator>Maurits</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/61577/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;Note that this will fail for all types of combining characters -- thus the stringinfo stuff being needed? :-)&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61559</link><pubDate>Thu, 28 Apr 2005 19:59:42 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61559</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/61559/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Note that this will fail for all types of combining characters -- thus the stringinfo stuff being needed? :-)</evnet:previewtext><dc:creator>michkap</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/61559/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Locale-dependency!&amp;nbsp; The missing piece!&amp;nbsp; Sweet!&lt;br&gt;
Throw in a couple ToLower() and IsAlpha() calls and we finally have a
C-like solution that can handle the test case &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=19194#19194"&gt;I proposed&lt;/a&gt; at the very
beginning of this thread:&lt;br&gt;
&lt;br&gt;
A man, a plan, a canal - Panamá! (note the accent)&lt;br&gt;
&lt;br&gt;
EDIT: Hmm, the &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationcompareoptionsclasstopic.asp"&gt;CompareOptions&lt;/a&gt;
enum has things like IgnoreCase, IgnoreKanaType (Japanese has two alphabets), IgnoreNonSpace (accents etc.),
IgnoreSymbols (spaces are symbols) - tailor-made!&amp;nbsp; Might even be
able to write one-line IsPalindrome with this kind of power.&lt;br&gt;
&lt;br&gt;
EDIT2:&lt;br&gt;
Not quite one-line, but nice:&lt;br&gt;
&lt;br&gt;
[code language="C#"]&lt;br&gt;using System;&lt;br&gt;
using System.Text;&lt;br&gt;
using System.Globalization;&lt;br&gt;
&lt;br&gt;bool IsPalindrome(string s)&lt;br&gt;
{&amp;nbsp;&amp;nbsp; char[] cs = s.ToCharArray();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Array.Reverse(cs);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; string r = new string(cs);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareInfo ci = CultureInfo.CurrentCulture.CompareInfo;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions co =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreCase |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreKanaType |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreNonSpace |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreSymbols |&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CompareOptions.IgnoreWidth;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (ci.Compare(s, r, co) == 0);&lt;br&gt;
}&lt;br&gt;
[/code]&lt;br&gt;
&lt;br&gt;
Note IsPalindrome("A man, a plan, a canal - Panamá!") == true&lt;br&gt;
Also note IsPalindrome("") == true - a feature&lt;br&gt;
&lt;br&gt;
Posted &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=63167"&gt;driver app&lt;/a&gt; in Sandbox&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61494</link><pubDate>Thu, 28 Apr 2005 17:55:54 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61494</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/61494/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Locale-dependency!&amp;nbsp; The missing piece!&amp;nbsp; Sweet!
Throw in a couple ToLower() and IsAlpha() calls and we finally have a
C-like solution that can handle the test case I proposed at the very
beginning of this thread:

A man, a plan, a canal - Panamá! (note the accent)

EDIT: Hmm, the&amp;#8230;</evnet:previewtext><dc:creator>Maurits</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/61494/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Here is an internationally savvy solution that works with Whidbey Beta 2....&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;using System;&lt;BR&gt;using System.Text;&lt;BR&gt;using System.Globalization;&lt;/P&gt;
&lt;P&gt;bool IsPalindrome(string st) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;StringInfo si = new StringInfo(st);&lt;BR&gt;&amp;nbsp; int count = si.LengthInTextElements;&lt;BR&gt;&lt;BR&gt;&amp;nbsp; if (count == 0) return false;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&amp;nbsp; for (int i = 0; i &amp;lt; ((count % 2 != 0) ? count - 1 : count) / 2; i++) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string st1 = si.SubstringByTextElements(i, 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string st2 = si.SubstringByTextElements(count - i - 1, 1);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (CultureInfo.CurrentCulture.CompareInfo.Compare(st1, st2) != 0) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;return (true);&lt;BR&gt;}&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61458</link><pubDate>Thu, 28 Apr 2005 15:37:19 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=61458</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/61458/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Here is an internationally savvy solution that works with Whidbey Beta 2....
using System;using System.Text;using System.Globalization;
bool IsPalindrome(string st) {&amp;nbsp;&amp;nbsp;StringInfo si = new StringInfo(st);&amp;nbsp; int count = si.LengthInTextElements;&amp;nbsp; if (count == 0) return&amp;#8230;</evnet:previewtext><dc:creator>michkap</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/61458/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>To be pedantic your alphaOnly parameter also allows underscores as well as alphabetic and numeric characters.&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=60551</link><pubDate>Mon, 25 Apr 2005 23:28:05 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=60551</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/60551/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>To be pedantic your alphaOnly parameter also allows underscores as well as alphabetic and numeric characters.</evnet:previewtext><dc:creator>Maurits</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/60551/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;namespace Infocus&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;using System;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public sealed class Util&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private Util(){}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// Verifies the input text is a palindrome.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="input"&amp;gt;The text to be&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;verified.&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="ignoreWhitepspace"&amp;gt;Option set to true to ignore whitespace.&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="caseSensitive"&amp;gt;Option that toggles case-sensitive.&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name="alphaOnly"&amp;gt;Option that verifies only alpha-numeric characters exist.&amp;lt;/param&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void VerifyPalindrome(string input, bool ignoreWhitespace, bool caseSensitive, bool alphaOnly)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;#if DEBUG&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// verify input is not null&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// NOTE: we could simply rely on Replace() below to throw this exception, hence DEBUG&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (input == null)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new NullReferenceException("Input cannot be null.");&lt;BR&gt;#endif&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// strip whitespace&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (ignoreWhitespace)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;input = System.Text.RegularExpressions.Regex.Replace(input, @"\s", "");&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;verify alphanumeric&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (alphaOnly &amp;amp;&amp;amp; System.Text.RegularExpressions.Regex.IsMatch(input, @"\W"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new ApplicationException("Input contained non-alphanumeric characters.");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// lowercase input&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!caseSensitive)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;input = input.ToLower();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// verify input length is valid for a palindrome&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (input.Length &amp;lt; 2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new ApplicationException("Length of input must be greater than 1.");&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int forwardIndexer = 0, reverseIndexer = input.Length-1;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ((forwardIndexer &amp;lt;= reverseIndexer) &amp;amp;&amp;amp; (input[forwardIndexer] == input[reverseIndexer]))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;forwardIndexer++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;reverseIndexer--;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (forwardIndexer&amp;nbsp;&amp;lt;= reverseIndexer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw new ApplicationException("Not a valid Palindrome.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// Performs a case insensitive, non-whitespace intensive palindrome verification on the input string.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;true if input is a palindrome&amp;lt;/returns&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static bool IsPalindrome(string input)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VerifyPalindrome(input, true, false, false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch (ApplicationException appex)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;I prefer that exceptions be leveraged especially for internal code. Optimization based on failure-rates aside, I think it's more elegant to say in-code:&lt;BR&gt;&lt;BR&gt;string&amp;nbsp;input = "dood"; &lt;BR&gt;VerifyPalindrome(input);&lt;BR&gt;&lt;BR&gt;and then fail back to the caller if he supplied us with invalid input. No need to continually re-invent error checks because of booleans along the stack.&lt;BR&gt;&lt;BR&gt;Of course, 1 or two more overloads wouldn't hurt.&lt;BR&gt;&lt;BR&gt;I didn't read through ALL posts made by everyone. If it looks like I copied your code, sorry, just know I didn't get past the t-sql post on the first page before realizing I thought the code should be done differently. This took me 9 minutes. I didn't test it (whiteboards don't have a debugger at Microsoft, do they?)&lt;BR&gt;&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=53106</link><pubDate>Tue, 05 Apr 2005 02:11:51 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=53106</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/53106/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>namespace Infocus{&amp;nbsp;&amp;nbsp;&amp;nbsp;using System;&amp;nbsp;&amp;nbsp;&amp;nbsp;public sealed class Util&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private Util(){}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/// Verifies the input text is a&amp;#8230;</evnet:previewtext><dc:creator>SEWilson</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/53106/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;&lt;BR&gt;&lt;BR&gt;'puncuation and case and space sensitive&lt;BR&gt;Function ispal(ByVal str As String) As Boolean&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim chars As Char() = str.ToCharArray()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Array.Reverse(chars)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;If TextBox1.Text = chars Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return False&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;End If&lt;BR&gt;End Function&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=53056</link><pubDate>Mon, 04 Apr 2005 22:01:55 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=53056</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/53056/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>'puncuation and case and space sensitiveFunction ispal(ByVal str As String) As Boolean&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim chars As Char() = str.ToCharArray()&amp;nbsp;&amp;nbsp;&amp;nbsp;Array.Reverse(chars)&amp;nbsp;&amp;nbsp;&amp;nbsp;If TextBox1.Text = chars Then&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return&amp;#8230;</evnet:previewtext><dc:creator>HippieGeek</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/53056/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>bool IsPalindrome(TCHAR* tzString)&lt;BR&gt;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// The odds of a string being Palindrome&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;is less&amp;nbsp;than one in a million so this function&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// returns false, just being safe.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO: add code here to improve this function.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;}</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=53036</link><pubDate>Mon, 04 Apr 2005 20:40:07 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=53036</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/53036/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>bool IsPalindrome(TCHAR* tzString){&amp;nbsp;&amp;nbsp;&amp;nbsp;// The odds of a string being Palindrome&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;is less&amp;nbsp;than one in a million so this function&amp;nbsp;&amp;nbsp;&amp;nbsp;// returns false, just being safe.&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO: add code here to improve this function.&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;}</evnet:previewtext><dc:creator>Jos104</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/53036/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>&lt;P&gt;Is it just me, or is the code in the video broken?&amp;nbsp;The "=&amp;gt;" in the "while" condition ought to be "&amp;lt;"...&lt;BR&gt;&lt;BR&gt;What do you think?&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=50773</link><pubDate>Mon, 28 Mar 2005 15:56:41 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=50773</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/50773/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Is it just me, or is the code in the video broken?&amp;nbsp;The "=&amp;gt;" in the "while" condition ought to be "&amp;lt;"...What do you think?</evnet:previewtext><dc:creator>peterpeter</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/50773/Trackback.aspx</trackback:ping></item><item><title>Re: Gary Daniels and Evan Goldring - Mock whiteboard problem</title><description>Boy, oh boy, the presentors would never get a job in our company: poor reasoning process, bad solution.&lt;BR&gt;&lt;BR&gt;This problem is so simple that the whole solution is just one line of generic code (also with guaranteed complexity):&lt;BR&gt;&lt;BR&gt;template&amp;lt;typename StringType&amp;gt;&lt;BR&gt;inline bool is_palindrom(const StringType&amp;amp; str)&lt;BR&gt;{&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return std::equal(str.begin(), str.begin() + str.size()/2, str.rend());&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;now you can instantiate the function on std::string, std::wstring, std::vector&amp;lt;char&amp;gt;, or whatever container is appropriate for your application, which has random access iterators. And if you need to&amp;nbsp;make it case-insensitive, just&amp;nbsp;add a corresponding binary predicate for std::equal, which is another one&amp;nbsp;line of code for English, or can be non-trivial for other languages. You can even test for palindrom objects that are not strings, as long as they contain equality comparable types.&lt;BR&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=50271</link><pubDate>Fri, 25 Mar 2005 22:34:40 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/TheChannel9Team/Gary-Daniels-and-Evan-Goldring-Mock-whiteboard-problem/?CommentID=50271</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/50271/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Boy, oh boy, the presentors would never get a job in our company: poor reasoning process, bad solution.This problem is so simple that the whole solution is just one line of generic code (also with guaranteed complexity):template&amp;lt;typename StringType&amp;gt;inline bool is_palindrom(const&amp;#8230;</evnet:previewtext><dc:creator>homerjay</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/50271/Trackback.aspx</trackback:ping></item></channel></rss>