Redfin interview question

1. Please write a method to normalize a string which represents a file path. For the purposes of this question, normalizing means: • all single dot components of the path must be removed. For example, "foo/./bar" should be normalized to "foo/bar". • all double dots components of the path must be removed, along with their parent directory. For example, "foo/bar/../baz" should be normalized to "foo/baz". That's it. Normally, a path normalization algorithm would do a lot of other stuff, but for this question, don't try any other kind of normalization or transformation of the path. As an example, "foo//bar" should be normalized to "foo//bar" (i.e. a no-op). Use any language you feel comfortable in, we prefer Java, but it’s not required. The method should take in a string (or whatever passes for a string in the language of your choice) and return a string representing the normalized path. Please write code that you feel proud of and would check in to source control in a professional environment. 2. Once you have completed the exercise, please create ten (or more!) test cases you would you use to test the method.

Interview Answers

Anonymous

14 Mar 2012

if(strPath.contains("..")){ strPath = strPath.replaceAll("/[A-Z0-9a-z]+/[.]{2}", ""); } if(strPath.contains(".")){ strPath = strPath.replaceAll("/[.]{1}", ""); }

Anonymous

23 Feb 2014

String s="foo/./bar"; String temp=s; if(s.contains(".")){ String[] s2=s.split("\\/|\\./"); String f=s2[0]+"/"+s2[s2.length-1]; System.out.print(f); } else{ System.out.println(s); }

1