LeetCode -- Google -- Interview Process. 1. Repeated String Match(java)
2018-01-13 14:36
423 查看
Given two strings A and B, find the minimum number of times A has to be repeated such that B is a substring of it. If no such solution, return -1.
For example, with A = “abcd” and B = “cdabcdab”.
Return 3, because by repeating A three times (“abcdabcdabcd”), B is a substring of it; and B is not a substring of A repeated two times (“abcdabcd”).
Note:
The length of A and B will be between 1 and 10000.
思路:首先判断s和t的长度,1. 如果s.length >= t.length, 那么就看s中有没有包含t,如果包含了,则返回1,如果没包含,s最多重复一次就可以看出包含关系,重复后包含则返回2,不包含则返回-1;2. 如果s.length < t.length,重复s足够多次(h次),如果s包含t, 则返回重复的次数,如果s不包含t,则返回-1,至于h的取值,取决于s的首尾的情况,如果s中重复的t的字段以外,首尾有多余的则重复次数+2,首尾有一方多余的+1,首尾都不多余为t重复的次数。
For example, with A = “abcd” and B = “cdabcdab”.
Return 3, because by repeating A three times (“abcdabcdabcd”), B is a substring of it; and B is not a substring of A repeated two times (“abcdabcd”).
Note:
The length of A and B will be between 1 and 10000.
思路:首先判断s和t的长度,1. 如果s.length >= t.length, 那么就看s中有没有包含t,如果包含了,则返回1,如果没包含,s最多重复一次就可以看出包含关系,重复后包含则返回2,不包含则返回-1;2. 如果s.length < t.length,重复s足够多次(h次),如果s包含t, 则返回重复的次数,如果s不包含t,则返回-1,至于h的取值,取决于s的首尾的情况,如果s中重复的t的字段以外,首尾有多余的则重复次数+2,首尾有一方多余的+1,首尾都不多余为t重复的次数。
public int repeatedStringMatch(String A, String B) { String s = A, t = B; int sl = s.length(), tl = t.length(); if (sl == 0 || tl == 0) return -1; if (sl < tl) { int index = t.indexOf(s), j = sl - 1, h = 0; if (index > 0) { if (!t.substring(tl - sl).equals(s)){ h = (tl - index) / sl + 2; } else { h = (tl - index) / sl + 1; } }else { if (tl % sl != 0) { h = tl / sl + 1; } else { h = tl / sl; } } String str = ""; for (int i = 0; i < h; i++) { str += s; } if (str.indexOf(t) == -1) return -1; else return h; } else { if (s.indexOf(t) != -1) return 1; String repeat = s + s; if (repeat.indexOf(t) == -1) return -1; else return 2; } }
相关文章推荐
- [LeetCode] Repeated String Match 重复字符串匹配
- leetcode 686 Repeated String Match
- Leetcode挑战题——Repeated String Match
- LeetCode Weekly Contest 52 Repeated String Match(string)
- LeetCode Repeated String Match
- Leetcode | Repeated String Match
- leetcode 686 Repeated String Match
- Java [Leetcode 387]First Unique Character in a String
- Java运行系统命令并获取值(Process java.lang.Runtime.exec(String[] cmdarray, String[] envp, File dir)
- LeetCode 8 String to Integer (atoi) (C,C++,Java,Python)
- leetcode:Interleaving String 使用动态规划求解的java源代码
- 【leetcode with java】8 String to Integer (atoi)
- String to Integer (atoi) leetcode java
- Interview stuff about String class in java
- Java for LeetCode 087 Scramble String
- (LeetCode) String to Integer (atoi) (Java)思路讲解及实现
- Leetcode 806. Number of Lines To Write String (Java)
- leetcode JAVA Reverse Words in a String 难度系数2-3?最新题151
- [LeetCode]Repeated Substring Pattern(Java)
- Java for LeetCode 097 Interleaving String 【HARD】