Amazon Interview - Check string is multiple duplicate - 我的博客 - ITeye技术网站



Amazon Interview - Check string is multiple duplicate - 我的博客 - ITeye技术网站

有一种String,是把一个更短的String重复n次而构成的,那个更短的String长度至少为2,输入一个String写代码返回true或者false

例子:
"abcabcabc"  true   因为它把abc重复3次构成
"bcdbcdbcde" false  最后一个是bcde
"abcdabcd"   True   因为它是abcd重复2次构成
"xyz"       false  因为它不是某一个String重复
"aaaaaaaaaa"  false  重复的短String长度应至少为2(这里不能看做aa重复5次)
要求算法复杂度为O(n)

 

Solution:

patternPos表示从哪里开始匹配。初始值为0。
patternEnd表示模式结束的位置。初始值为0。

当前字符和patternPos不相等的话,说明pattern不成立,patternPos回到开始位置0,patternEnd设为当前字符所在位置i。

当前字符和patternPos相等的话,patternPos加1移到下一个位置,patternEnd保持不变。并检查下如果patternPos超过patternEnd的话,说明截止到当前字符成功匹配,patternPos回到开始开始匹配下一串字符。注意,当i走到最后的话,patternPos就不用清0了。

最后判断成功的条件是,patternPos大于patternEnd的时候,说明整个字符串pattern且至少重复pattern两次。patternEnd大于零,说明pattern长度大于1。


Read full article from Amazon Interview - Check string is multiple duplicate - 我的博客 - ITeye技术网站


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts